diff --git a/lib/sidekiq/fetch.rb b/lib/sidekiq/fetch.rb index e23c595e6..2c3a0d2f6 100644 --- a/lib/sidekiq/fetch.rb +++ b/lib/sidekiq/fetch.rb @@ -40,7 +40,7 @@ def retrieve_work # 4825 Sidekiq Pro with all queues paused will return an # empty set of queues with a trailing TIMEOUT value. if qs.size <= 1 - sleep(2) + sleep(TIMEOUT) return nil end diff --git a/test/test_fetch.rb b/test/test_fetch.rb index 7a7ee7d7b..65d9106bf 100644 --- a/test/test_fetch.rb +++ b/test/test_fetch.rb @@ -57,4 +57,11 @@ assert_equal 1, q2.size end + it 'sleeps when no queues are active' do + fetch = Sidekiq::BasicFetch.new(:queues => []) + mock = Minitest::Mock.new + mock.expect(:call, nil, [Sidekiq::BasicFetch::TIMEOUT]) + fetch.stub(:sleep, mock) { assert_nil fetch.retrieve_work } + mock.verify + end end