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