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
- SIDEKIQ_GTE_5_0_0
- SIDEKIQ_GTE_7_0_0
Public Class Methods
new(max_retries: nil)
click to toggle source
# File lib/airbrake/sidekiq/retryable_jobs_filter.rb, line 21 def initialize(max_retries: nil) @retries_before_notify = max_retries end
Public Instance Methods
call(notice)
click to toggle source
# File lib/airbrake/sidekiq/retryable_jobs_filter.rb, line 25 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 41 def max_attempts_for(job) if @retries_before_notify @retries_before_notify 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 51 def max_retries @max_retries ||= begin config = SIDEKIQ_GTE_7_0_0 ? ::Sidekiq.default_configuration : ::Sidekiq.options config[:max_retries] || DEFAULT_MAX_RETRY_ATTEMPTS end end
retryable?(job)
click to toggle source
# File lib/airbrake/sidekiq/retryable_jobs_filter.rb, line 33 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