class Airbrake::Sidekiq::RetryableJobsFilter

Filter that can ignore notices from jobs that failed but will be retried by Sidekiq @since v7.3.0

Constants

DEFAULT_MAX_RETRY_ATTEMPTS

Public Class Methods

new(max_retries: nil) click to toggle source
# File lib/airbrake/sidekiq/retryable_jobs_filter.rb, line 16
def initialize(max_retries: nil)
  @max_retries = max_retries
end

Public Instance Methods

call(notice) click to toggle source
# File lib/airbrake/sidekiq/retryable_jobs_filter.rb, line 20
def call(notice)
  job = notice[:params][:job]

  notice.ignore! if retryable?(job)
end

Private Instance Methods

max_attempts_for(job) click to toggle source
# File lib/airbrake/sidekiq/retryable_jobs_filter.rb, line 36
def max_attempts_for(job)
  if @max_retries
    @max_retries
  elsif job['retry'].is_a?(Integer)
    job['retry']
  else
    max_retries
  end
end
max_retries() click to toggle source
# File lib/airbrake/sidekiq/retryable_jobs_filter.rb, line 46
def max_retries
  @max_retries ||= ::Sidekiq.options[:max_retries] || DEFAULT_MAX_RETRY_ATTEMPTS
end
retryable?(job) click to toggle source
# File lib/airbrake/sidekiq/retryable_jobs_filter.rb, line 28
def retryable?(job)
  return false unless job && job['retry']

  max_attempts = max_attempts_for(job)
  retry_count = (job['retry_count'] || -1) + 1
  retry_count < max_attempts
end