diff --git a/lib/sidekiq/instrument/mixin.rb b/lib/sidekiq/instrument/mixin.rb index 8d35046..19982d8 100644 --- a/lib/sidekiq/instrument/mixin.rb +++ b/lib/sidekiq/instrument/mixin.rb @@ -21,7 +21,11 @@ def max_retries(worker) retries = fetch_worker_retry(worker) case retries.to_s when "true", "" - Sidekiq[:max_retries] + if Sidekiq.respond_to?(:default_configuration) # Sidekiq 7.0+ + Sidekiq.default_configuration[:max_retries] + else # Sidekiq 6 + Sidekiq[:max_retries] + end || Sidekiq::JobRetry::DEFAULT_MAX_RETRY_ATTEMPTS when "false" 0 else diff --git a/lib/sidekiq/instrument/version.rb b/lib/sidekiq/instrument/version.rb index 7314a6c..3f0eae3 100644 --- a/lib/sidekiq/instrument/version.rb +++ b/lib/sidekiq/instrument/version.rb @@ -1,5 +1,5 @@ module Sidekiq module Instrument - VERSION = '0.9.0' + VERSION = '0.9.1' end end diff --git a/spec/sidekiq-instrument/server_middleware_spec.rb b/spec/sidekiq-instrument/server_middleware_spec.rb index 3aef824..d064c20 100644 --- a/spec/sidekiq-instrument/server_middleware_spec.rb +++ b/spec/sidekiq-instrument/server_middleware_spec.rb @@ -3,6 +3,14 @@ require 'sidekiq/instrument/middleware/server' RSpec.describe Sidekiq::Instrument::ServerMiddleware do + def set_max_retries(max_retries) + if Sidekiq.respond_to?(:default_configuration) # Sidekiq 7.0+ + Sidekiq.default_configuration[:max_retries] = max_retries + else # Sidekiq 6 + Sidekiq[:max_retries] = max_retries + end + end + describe '#call' do let(:expected_dog_options) { { tags: ['queue:default', 'worker:my_worker'] } } let(:expected_error_dog_options) { { tags: ['queue:default', 'worker:my_worker', 'error:RuntimeError'] } } @@ -29,7 +37,7 @@ context 'when an initial job succeeds' do before do - Sidekiq[:max_retries] = 0 + set_max_retries(0) end it 'increments StatsD dequeue and success counters' do @@ -103,7 +111,7 @@ context 'when a retried job succeeds' do before do - Sidekiq[:max_retries] = 1 + set_max_retries(1) allow_any_instance_of(MyWorker).to receive(:perform).and_raise(RuntimeError.new('foo')) # This makes the job look like a retry since we can't access the job argument @@ -131,7 +139,7 @@ context 'when a job fails' do before do - Sidekiq[:max_retries] = 0 + set_max_retries(0) allow_any_instance_of(MyWorker).to receive(:perform).and_raise(RuntimeError.new('foo')) end @@ -184,7 +192,7 @@ context 'when the worker has retries disabled' do shared_examples 'it does not attempt to track retries' do |retry_value| before do - Sidekiq[:max_retries] = 1 + set_max_retries(1) allow(MyWorker).to receive(:get_sidekiq_options).and_return({ "retry" => retry_value, "queue" => 'default' }) end @@ -218,7 +226,7 @@ context 'when the current job has retries left to attempt' do shared_examples 'it tracks the retries with DogStatsD' do |retry_value| before do - Sidekiq[:max_retries] = 2 + set_max_retries(2) allow(MyWorker).to receive(:get_sidekiq_options).and_return({ "retry" => retry_value, "queue" => 'default' }) end @@ -253,7 +261,7 @@ context 'when the job is on its last retry attempt' do before do - Sidekiq[:max_retries] = 1 + set_max_retries(1) # This makes the job look like a retry since we can't access the job argument allow_any_instance_of(Sidekiq::Instrument::ServerMiddleware).to receive(:current_retries).and_return(1)