-
-
Notifications
You must be signed in to change notification settings - Fork 288
Open
Description
I’m seeing persistent Redis lock digests after a job finishes execution using lock: :until_executed in Sidekiq 8.0.4 with sidekiq-unique-jobs 8.0.11 on Rails 8.0.3.
- Job runs and finishes successfully.
- Lock digest (uniquejobs:) remains in Redis after job completion.
- As a result, any subsequent
.perform_asynccalls are rejected - I’ve verified the job does not raise exceptions.
Worker
# worker
class ProjectWorker
include Sidekiq::Worker
sidekiq_options queue: :project
retry: 8,
lock: :until_executed,
on_conflict: :log
def perform(arg1, arg2)
puts "Running: #{arg1}, #{arg2}"
end
end
# enqueue
ProjectWorker.perform_async("hello", "world")Gem versions:
Sidekiq v8.0.4 / Pro v8.0.1
sidekiq-unique-jobs: 8.0.11
rails: 8.0.3
redis: 7.2.0
ruby: 3.4.4
Sidekiq config:
require 'sidekiq/pro/web'
require 'sidekiq-scheduler'
require 'sidekiq-scheduler/web'
require 'sidekiq-unique-jobs'
require 'middleware/sidekiq/set_current_context'
require 'middleware/sidekiq/account_tenant_scoping'
require 'sidekiq/middleware/current_attributes'
Sidekiq::CurrentAttributes.persist('CurrentPersist')
Sidekiq.configure_client do |config|
config.redis = { url: Settings.redis.url, ssl_params: { verify_mode: OpenSSL::SSL::VERIFY_NONE } }
config.logger.level = Rails.env.development? ? Logger::INFO : Logger::WARN
# Sidekiq Pro options
Sidekiq::Client.reliable_push! unless Rails.env.test?
config.client_middleware do |chain|
chain.add SidekiqUniqueJobs::Middleware::Client
end
end
Sidekiq.configure_server do |config|
config.redis = { url: Settings.redis.url, ssl_params: { verify_mode: OpenSSL::SSL::VERIFY_NONE } }
config.logger.level = Rails.env.development? ? Logger::INFO : Logger::WARN
# Default is 5
config.average_scheduled_poll_interval = 2
config.on(:startup) do
Sidekiq.schedule = YAML.safe_load(ERB.new(Rails.root.join('config/schedule.yml').read).result)
SidekiqScheduler::Scheduler.instance.reload_schedule!
end
# Sidekiq Pro options
Sidekiq::Client.reliable_push! unless Rails.env.test?
config.super_fetch!
config.reliable_scheduler!
config.client_middleware do |chain|
chain.add SidekiqUniqueJobs::Middleware::Client
end
config.server_middleware do |chain|
chain.add SidekiqUniqueJobs::Middleware::Server
chain.add Middleware::Sidekiq::SetCurrentContext
chain.add Middleware::Sidekiq::AccountTenantScoping
end
SidekiqUniqueJobs::Server.configure(config)
end
unless Rails.env.local?
Sidekiq::Web.use Rack::Auth::Basic do |username, password|
username == Settings.sidekiq.admin.username && password == Settings.sidekiq.admin.password
end
end
# Sidekiq Unique Jobs
SidekiqUniqueJobs.configure do |config|
config.lock_info = true
endReactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels