Commit f8f00f00 authored by Alishan Ladhani's avatar Alishan Ladhani

Track and rescue errors that occur when emitting Snowplow events

As a failsafe
parent 2a9367fd
......@@ -29,6 +29,8 @@ module Gitlab
snowplow.event(category, action, label: label, property: property, value: value, context: contexts)
product_analytics.event(category, action, label: label, property: property, value: value, context: contexts)
rescue => error
Gitlab::ErrorTracking.track_and_raise_for_dev_exception(error, snowplow_category: category, snowplow_action: action)
end
def self_describing_event(schema_url, data:, context: nil)
......
......@@ -36,12 +36,12 @@ RSpec.describe Gitlab::Tracking do
end
describe '.event' do
shared_examples 'delegates to destination' do |klass|
before do
allow_any_instance_of(Gitlab::Tracking::Destinations::Snowplow).to receive(:event)
allow_any_instance_of(Gitlab::Tracking::Destinations::ProductAnalytics).to receive(:event)
end
shared_examples 'delegates to destination' do |klass|
it "delegates to #{klass} destination" do
other_context = double(:context)
......@@ -70,8 +70,17 @@ RSpec.describe Gitlab::Tracking do
end
end
include_examples 'delegates to destination', Gitlab::Tracking::Destinations::Snowplow
include_examples 'delegates to destination', Gitlab::Tracking::Destinations::ProductAnalytics
it_behaves_like 'delegates to destination', Gitlab::Tracking::Destinations::Snowplow
it_behaves_like 'delegates to destination', Gitlab::Tracking::Destinations::ProductAnalytics
it 'tracks errors' do
expect(Gitlab::ErrorTracking).to receive(:track_and_raise_for_dev_exception).with(
an_instance_of(ContractError),
snowplow_category: nil, snowplow_action: 'some_action'
)
described_class.event(nil, 'some_action')
end
end
describe '.self_describing_event' do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment