Describe the bug
until_and_while_executing does not on sidekiq restarts.
Expected behavior
I expect that job will be retried when sidekiq started after normal restart.
Current behavior
There are some lock keys in redis that prevents job from being retries.
[8] pry(main)> Sidekiq.redis { |r| puts r.keys('uniquejob*').sort; }; nil
uniquejobs:f46bc25dd7800206da7159bd516aa7e1:AVAILABLE
uniquejobs:f46bc25dd7800206da7159bd516aa7e1:RUN:EXISTS
uniquejobs:f46bc25dd7800206da7159bd516aa7e1:RUN:GRABBED
Worker class
class TestWorker
include Sidekiq::Worker
# both does not work
sidekiq_options queue: :default, unique: :until_and_while_executing, retry: true
# sidekiq_options queue: :default, unique: :until_and_while_executing, retry: false
# this callback is not called
sidekiq_retries_exhausted do |msg, _ex|
Rails.logger.info "sidekiq_retries_exhausted: #{object_id} msg['unique_digest']: #{msg['unique_digest'].inspect}"
SidekiqUniqueJobs::Digests.del(digest: msg['unique_digest']) if msg['unique_digest']
end
def perform
Rails.logger.info "started: #{object_id}, sleeping 40s"
sleep 40
Rails.logger.info "finished: #{object_id}"
end
end
Additional context
Jobs are enqueued using perform_async.
`config/initializers/sidekiq.rb
Sidekiq.configure_server do |config|
....
config.death_handlers << ->(job, _ex) do
Rails.logger.info "death_handlers: #{object_id} job['unique_digest']: #{job['unique_digest'].inspect}"
SidekiqUniqueJobs::Digests.del(digest: job['unique_digest']) if job['unique_digest']
end
end
Describe the bug
until_and_while_executingdoes not on sidekiq restarts.Expected behavior
I expect that job will be retried when sidekiq started after normal restart.
Current behavior
There are some lock keys in redis that prevents job from being retries.
Worker class
Additional context
Jobs are enqueued using
perform_async.`config/initializers/sidekiq.rb