Module: Gitlab::InternalEvents
- Extended by:
- Tracking::Helpers, UsageDataCounters::RedisCounter, UsageDataCounters::RedisHashCounter, UsageDataCounters::RedisSum, Utils::StrongMemoize
- Defined in:
- lib/gitlab/internal_events.rb,
lib/gitlab/internal_events/events_router.rb,
lib/gitlab/internal_events/event_definitions.rb
Defined Under Namespace
Modules: EventDefinitions Classes: EventsRouter
Constant Summary collapse
- SNOWPLOW_EMITTER_BUFFER_SIZE =
100- DEFAULT_BUFFER_SIZE =
1- KEY_EXPIRY_LENGTH =
Gitlab::UsageDataCounters::HLLRedisCounter::KEY_EXPIRY_LENGTH
Constants included from UsageDataCounters::RedisCounter
UsageDataCounters::RedisCounter::KEY_OVERRIDES_PATH
Class Method Summary collapse
Methods included from UsageDataCounters::RedisHashCounter
Methods included from UsageDataCounters::RedisSum
Methods included from UsageDataCounters::RedisCounter
increment, increment_by, total_count, with_batched_redis_writes
Methods included from Tracking::Helpers
dnt_enabled?, trackable_html_request?
Class Method Details
.track_event(event_name, category: nil, additional_properties: {}, **kwargs) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/gitlab/internal_events.rb', line 16 def track_event(event_name, category: nil, additional_properties: {}, **kwargs) extract_additional_properties!(event_name, additional_properties, kwargs) Gitlab::Tracking::EventValidator.new(event_name, additional_properties, kwargs).validate! send_snowplow_event = kwargs.key?(:send_snowplow_event) ? kwargs.delete(:send_snowplow_event) : true event_router = Gitlab::InternalEvents::EventsRouter.new(event_name, additional_properties, kwargs) track_analytics_event(event_name, send_snowplow_event, category: category, additional_properties: event_router.public_additional_properties, **kwargs) event_router.event_definition.extra_trackers.each do |tracking_class, properties| next unless tracking_class tracking_class.track_event(event_name, **event_router.extra_tracking_data(properties)) end rescue StandardError => e extra = {} kwargs.each_key do |k| extra[k] = kwargs[k].is_a?(::ApplicationRecord) ? kwargs[k].try(:id) : kwargs[k] end error_payload = { server_version: Gitlab::VERSION, event_name: event_name, additional_properties: additional_properties, kwargs: extra } if Gitlab.com? || Gitlab.dev_or_test_env? # rubocop:disable Gitlab/AvoidGitlabInstanceChecks -- not a feature, need to process errors on SM instances differently Gitlab::ErrorTracking.track_and_raise_for_dev_exception(e, **error_payload) else Gitlab::AppLogger.warn(e, **error_payload) end nil end |