Describe the bug
I got NoMethodError: undefined method []' for true:TrueClassfor every worker that hasuntil_and_while_executinglock it happens when executingperform_async` method
Expected behavior
perform_async should working fine
Current behavior
I got NoMethodError: undefined method `[]' for true:TrueClass
Worker class
class MyWorker
include Sidekiq::Worker
sidekiq_options(queue: :critical,
backtrace: true,
lock: :until_and_while_executing,
lock_timeout: 600,
on_conflict: {
client: :reject,
server: :reject
},
lock_prefix: 'xxxx')
def perform(args); end
def self.lock_args(args)
[args[0], args[1]]
end
end
Additional context
Add any other context about the problem here.
I have many workers that have until_and_while_executing lock
it seems only works when I have 1 worker with until_and_while_executing lock
This is the backtrace
/usr/local/bundle/ruby/2.5.0/gems/sidekiq-5.2.9/lib/sidekiq/client.rb:192:in `atomic_push'
/usr/local/bundle/ruby/2.5.0/gems/sidekiq-5.2.9/lib/sidekiq/client.rb:185:in `block (2 levels) in raw_push'
/usr/local/bundle/ruby/2.5.0/gems/redis-4.1.4/lib/redis.rb:2462:in `block in multi'
/usr/local/bundle/ruby/2.5.0/gems/redis-4.1.4/lib/redis.rb:51:in `block in synchronize'
/usr/lib/fullstaq-ruby/versions/2.5-jemalloc/lib/ruby/2.5.0/monitor.rb:235:in `mon_synchronize'
/usr/local/bundle/ruby/2.5.0/gems/redis-4.1.4/lib/redis.rb:51:in `synchronize'
/usr/local/bundle/ruby/2.5.0/gems/redis-4.1.4/lib/redis.rb:2455:in `multi'
/usr/local/bundle/ruby/2.5.0/gems/sidekiq-5.2.9/lib/sidekiq/client.rb:184:in `block in raw_push'
/usr/local/bundle/ruby/2.5.0/gems/connection_pool-2.2.5/lib/connection_pool.rb:63:in `block (2 levels) in with'
/usr/local/bundle/ruby/2.5.0/gems/connection_pool-2.2.5/lib/connection_pool.rb:62:in `handle_interrupt'
/usr/local/bundle/ruby/2.5.0/gems/connection_pool-2.2.5/lib/connection_pool.rb:62:in `block in with'
/usr/local/bundle/ruby/2.5.0/gems/connection_pool-2.2.5/lib/connection_pool.rb:59:in `handle_interrupt'
/usr/local/bundle/ruby/2.5.0/gems/connection_pool-2.2.5/lib/connection_pool.rb:59:in `with'
/usr/local/bundle/ruby/2.5.0/gems/sidekiq-5.2.9/lib/sidekiq/client.rb:183:in `raw_push'
/usr/local/bundle/ruby/2.5.0/gems/sidekiq-5.2.9/lib/sidekiq/client.rb:74:in `push'
/usr/local/bundle/ruby/2.5.0/gems/sidekiq-5.2.9/lib/sidekiq/client.rb:132:in `push'
/usr/local/bundle/ruby/2.5.0/gems/sidekiq-5.2.9/lib/sidekiq/api.rb:477:in `block in retry'
/usr/local/bundle/ruby/2.5.0/gems/sidekiq-unique-jobs-7.1.5/lib/sidekiq_unique_jobs/sidekiq_unique_ext.rb:38:in `block in remove_job'
/usr/local/bundle/ruby/2.5.0/gems/sidekiq-5.2.9/lib/sidekiq/api.rb:503:in `block in remove_job'
/usr/local/bundle/ruby/2.5.0/gems/sidekiq-5.2.9/lib/sidekiq.rb:97:in `block in redis'
/usr/local/bundle/ruby/2.5.0/gems/connection_pool-2.2.5/lib/connection_pool.rb:63:in `block (2 levels) in with'
/usr/local/bundle/ruby/2.5.0/gems/connection_pool-2.2.5/lib/connection_pool.rb:62:in `handle_interrupt'
/usr/local/bundle/ruby/2.5.0/gems/connection_pool-2.2.5/lib/connection_pool.rb:62:in `block in with'
/usr/local/bundle/ruby/2.5.0/gems/connection_pool-2.2.5/lib/connection_pool.rb:59:in `handle_interrupt'
/usr/local/bundle/ruby/2.5.0/gems/connection_pool-2.2.5/lib/connection_pool.rb:59:in `with'
/usr/local/bundle/ruby/2.5.0/gems/sidekiq-5.2.9/lib/sidekiq.rb:94:in `redis'
/usr/local/bundle/ruby/2.5.0/gems/sidekiq-5.2.9/lib/sidekiq/api.rb:496:in `remove_job'
/usr/local/bundle/ruby/2.5.0/gems/sidekiq-unique-jobs-7.1.5/lib/sidekiq_unique_jobs/sidekiq_unique_ext.rb:36:in `remove_job'
/usr/local/bundle/ruby/2.5.0/gems/sidekiq-5.2.9/lib/sidekiq/api.rb:474:in `retry'
/usr/local/bundle/ruby/2.5.0/gems/sidekiq-5.2.9/lib/sidekiq/api.rb:576:in `block in each'
/usr/local/bundle/ruby/2.5.0/gems/sidekiq-5.2.9/lib/sidekiq/api.rb:575:in `each'
/usr/local/bundle/ruby/2.5.0/gems/sidekiq-5.2.9/lib/sidekiq/api.rb:575:in `each'
I use following script in rails console to retry all dead jobs
loop do
ds = Sidekiq::DeadSet.new;
break if ds.size.zero?
ds.map &:retry
end
Describe the bug
I got
NoMethodError: undefined method[]' for true:TrueClassfor every worker that hasuntil_and_while_executinglock it happens when executingperform_async` methodExpected behavior
perform_async should working fine
Current behavior
I got NoMethodError: undefined method `[]' for true:TrueClass
Worker class
Additional context
Add any other context about the problem here.
I have many workers that have
until_and_while_executinglockit seems only works when I have 1 worker with
until_and_while_executinglockThis is the backtrace
I use following script in rails console to retry all dead jobs