From 9ea2d3e83657d115baf166257a50c7e3394318aa Mon Sep 17 00:00:00 2001 From: Tom de Bruijn Date: Fri, 23 Aug 2024 11:53:44 +0200 Subject: [PATCH] Do not report `Sidekiq::JobRetry::Skip` errors (#1256) These errors would be reported by our Rails error subscriber. This is an internal Sidekiq error we do not need to report. --- .../do-not-report-sidekiq--jobretry--skip-errors.md | 6 ++++++ lib/appsignal/integrations/railtie.rb | 12 ++++++++++++ spec/lib/appsignal/integrations/railtie_spec.rb | 11 +++++++++++ 3 files changed, 29 insertions(+) create mode 100644 .changesets/do-not-report-sidekiq--jobretry--skip-errors.md diff --git a/.changesets/do-not-report-sidekiq--jobretry--skip-errors.md b/.changesets/do-not-report-sidekiq--jobretry--skip-errors.md new file mode 100644 index 000000000..456f69851 --- /dev/null +++ b/.changesets/do-not-report-sidekiq--jobretry--skip-errors.md @@ -0,0 +1,6 @@ +--- +bump: patch +type: fix +--- + +Do not report `Sidekiq::JobRetry::Skip` errors. These errors would be reported by our Rails error subscriber. This is an internal Sidekiq error we do not need to report. diff --git a/lib/appsignal/integrations/railtie.rb b/lib/appsignal/integrations/railtie.rb index e13b8e94d..216d646d5 100644 --- a/lib/appsignal/integrations/railtie.rb +++ b/lib/appsignal/integrations/railtie.rb @@ -80,6 +80,8 @@ def self.initialize_error_reporter class RailsErrorReporterSubscriber class << self def report(error, handled:, severity:, context: {}, source: nil) # rubocop:disable Lint/UnusedMethodArgument + return if ignored_error?(error) + is_rails_runner = source == "application.runner.railties" namespace, action_name, tags, custom_data = context_for(context.dup) @@ -100,6 +102,16 @@ def report(error, handled:, severity:, context: {}, source: nil) # rubocop:disab private + IGNORED_ERRORS = [ + # We don't need to alert Sidekiq job skip errors. + # This is an internal Sidekiq error. + "Sidekiq::JobRetry::Skip" + ].freeze + + def ignored_error?(error) + IGNORED_ERRORS.include?(error.class.name) + end + def context_for(context) tags = {} diff --git a/spec/lib/appsignal/integrations/railtie_spec.rb b/spec/lib/appsignal/integrations/railtie_spec.rb index 3f90c77e5..096c9c408 100644 --- a/spec/lib/appsignal/integrations/railtie_spec.rb +++ b/spec/lib/appsignal/integrations/railtie_spec.rb @@ -229,6 +229,17 @@ def subscribe(subscriber) expect(last_transaction).to have_error("ExampleStandardError", "error message") end + it "ignores Sidekiq::JobRetry::Skip errors" do + require "sidekiq" + require "sidekiq/job_retry" + + with_rails_error_reporter do + Rails.error.handle { raise Sidekiq::JobRetry::Skip, "error message" } + end + + expect(last_transaction).to_not have_error + end + context "when no transaction is active" do it "reports the error on a new transaction" do with_rails_error_reporter do