Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SidekiqUniqueJobs::ScriptError #192

Closed
TangMonk opened this issue Aug 1, 2016 · 5 comments
Closed

SidekiqUniqueJobs::ScriptError #192

TangMonk opened this issue Aug 1, 2016 · 5 comments

Comments

@TangMonk
Copy link

TangMonk commented Aug 1, 2016

using ruby 2.1.5p273 with following gem

  • sidekiq (4.0.1)
  • sidekiq-unique-jobs (4.0.17)

sidekiq in htop(image):

image

newrelic Error message:

SidekiqUniqueJobs::ScriptError: acquire_lock.luaNOSCRIPT No matching script. Please use EVAL.local unique_key = KEYS[1]local job_id = ARGV[1]local expires = ARGV[2]local stored_jid = redis.pcall('get', unique_key)if stored_jid then if stored_jid == job_id then return 1 else return 0 endendif redis.pcall('set', unique_key, job_id, 'nx', 'ex', expires) then redis.pcall('hsetnx', 'uniquejobs', job_id, unique_key) return 1else return 0end/mnt/youleyuan/youleyuan/vendor/bundle/ruby/2.1.0/gems/redis-3.2.2/lib/redis/client.rb:114:in `call'/mnt/youleyuan/youleyuan/vendor/bundle/ruby/2.1.0/gems/newrelic_rpm-3.14.1.311/lib/new_relic/agent/instrumentation/redis.rb:42:in `block in call'/mnt/youleyuan/youleyuan/vendor/bundle/ruby/2.1.0/gems/newrelic_rpm-3.14.1.311/lib/new_relic/agent/datastores.rb:111:in `block in wrap'/mnt/youleyuan/youleyuan/vendor/bundle/ruby/2.1.0/gems/newrelic_rpm-3.14.1.311/lib/new_relic/agent/method_tracer.rb:73:in `block in trace_execution_scoped'/mnt/youleyuan/youleyuan/vendor/bundle/ruby/2.1.0/gems/newrelic_rpm-3.14.1.311/lib/new_relic/agent/method_tracer_helpers.rb:82:in `trace_execution_scoped'/mnt/youleyuan/youleyuan/vendor/bundle/ruby/2.1.0/gems/newrelic_rpm-3.14.1.311/lib/new_relic/agent/method_tracer.rb:71:in `trace_execution_scoped'/mnt/youleyuan/youleyuan/vendor/bundle/ruby/2.1.0/gems/newrelic_rpm-3.14.1.311/lib/new_relic/agent/datastores.rb:108:in `wrap'/mnt/youleyuan/youleyuan/vendor/bundle/ruby/2.1.0/gems/newrelic_rpm-3.14.1.311/lib/new_relic/agent/instrumentation/redis.rb:41:in `call'/mnt/youleyuan/youleyuan/vendor/bundle/ruby/2.1.0/gems/redis-3.2.2/lib/redis.rb:2340:in `block in _eval'/mnt/youleyuan/youleyuan/vendor/bundle/ruby/2.1.0/gems/redis-3.2.2/lib/redis.rb:57:in `block in synchronize'/usr/local/rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/monitor.rb:211:in `mon_synchronize'/mnt/youleyuan/youleyuan/vendor/bundle/ruby/2.1.0/gems/redis-3.2.2/lib/redis.rb:57:in `synchronize'/mnt/youleyuan/youleyuan/vendor/bundle/ruby/2.1.0/gems/redis-3.2.2/lib/redis.rb:2339:in `_eval'/mnt/youleyuan/youleyuan/vendor/bundle/ruby/2.1.0/gems/redis-3.2.2/lib/redis.rb:2391:in `evalsha'/mnt/youleyuan/youleyuan/vendor/bundle/ruby/2.1.0/gems/sidekiq-unique-jobs-4.0.17/lib/sidekiq_unique_jobs/scripts.rb:28:in `block in call'/mnt/youleyuan/youleyuan/vendor/bundle/ruby/2.1.0/gems/sidekiq-unique-jobs-4.0.17/lib/sidekiq-unique-jobs.rb:68:in `block in connection'/mnt/youleyuan/youleyuan/vendor/bundle/ruby/2.1.0/gems/sidekiq-4.0.1/lib/sidekiq.rb:84:in `block in redis'/mnt/youleyuan/youleyuan/vendor/bundle/ruby/2.1.0/gems/connection_pool-2.2.0/lib/connection_pool.rb:64:in `block (2 levels) in with'/mnt/youleyuan/youleyuan/vendor/bundle/ruby/2.1.0/gems/connection_pool-2.2.0/lib/connection_pool.rb:63:in `handle_interrupt'/mnt/youleyuan/youleyuan/vendor/bundle/ruby/2.1.0/gems/connection_pool-2.2.0/lib/connection_pool.rb:63:in `block in with'/mnt/youleyuan/youleyuan/vendor/bundle/ruby/2.1.0/gems/connection_pool-2.2.0/lib/connection_pool.rb:60:in `handle_interrupt'/mnt/youleyuan/youleyuan/vendor/bundle/ruby/2.1.0/gems/connection_pool-2.2.0/lib/connection_pool.rb:60:in `with'/mnt/youleyuan/youleyuan/vendor/bundle/ruby/2.1.0/gems/sidekiq-4.0.1/lib/sidekiq.rb:81:in `redis'/mnt/youleyuan/youleyuan/vendor/bundle/ruby/2.1.0/gems/sidekiq-unique-jobs-4.0.17/lib/sidekiq-unique-jobs.rb:68:in `connection'/mnt/youleyuan/youleyuan/vendor/bundle/ruby/2.1.0/gems/sidekiq-unique-jobs-4.0.17/lib/sidekiq_unique_jobs/scripts.rb:26:in `call'/mnt/youleyuan/youleyuan/vendor/bundle/ruby/2.1.0/gems/sidekiq-unique-jobs-4.0.17/lib/sidekiq_unique_jobs/lock/until_executed.rb:40:in `lock'/mnt/youleyuan/youleyuan/vendor/bundle/ruby/2.1.0/gems/sidekiq-unique-jobs-4.0.17/lib/sidekiq_unique_jobs/client/middleware.rb:31:in `acquire_lock'/mnt/youleyuan/youleyuan/vendor/bundle/ruby/2.1.0/gems/sidekiq-unique-jobs-4.0.17/lib/sidekiq_unique_jobs/client/middleware.rb:26:in `disabled_or_successfully_locked?'/mnt/youleyuan/youleyuan/vendor/bundle/ruby/2.1.0/gems/sidekiq-unique-jobs-4.0.17/lib/sidekiq_unique_jobs/client/middleware.rb:18:in `ca

newrelic Stack trace:

…-unique-jobs-4.0.17/lib/sidekiq_unique_jobs/
scripts.rb:  31:in `rescue in call'
…-unique-jobs-4.0.17/lib/sidekiq_unique_jobs/
scripts.rb:  26:in `call'
…-4.0.17/lib/sidekiq_unique_jobs/lock/
until_executed.rb:  40:in `lock'
…bs-4.0.17/lib/sidekiq_unique_jobs/client/
middleware.rb:  31:in `acquire_lock'
…bs-4.0.17/lib/sidekiq_unique_jobs/client/
middleware.rb:  26:in `disabled_or_successfully_locked?'
…bs-4.0.17/lib/sidekiq_unique_jobs/client/
middleware.rb:  18:in `call'
…1.0/gems/sidekiq-4.0.1/lib/sidekiq/middleware/
chain.rb: 129:in `block in invoke'
…1.0/gems/sidekiq-4.0.1/lib/sidekiq/middleware/
chain.rb: 132:in `call'
…1.0/gems/sidekiq-4.0.1/lib/sidekiq/middleware/
chain.rb: 132:in `invoke'
…le/ruby/2.1.0/gems/sidekiq-4.0.1/lib/sidekiq/
client.rb: 203:in `process_single'
…le/ruby/2.1.0/gems/sidekiq-4.0.1/lib/sidekiq/
client.rb:  65:in `push'
…le/ruby/2.1.0/gems/sidekiq-4.0.1/lib/sidekiq/
worker.rb:  98:in `client_push'
…le/ruby/2.1.0/gems/sidekiq-4.0.1/lib/sidekiq/
worker.rb:  67:in `perform_in'
…e/ruby/2.1.0/gems/sidetiq-0.6.3/lib/sidetiq/
handler.rb:  42:in `enqueue'
…e/ruby/2.1.0/gems/sidetiq-0.6.3/lib/sidetiq/
handler.rb:  21:in `block in dispatch'
…uby/2.1.0/gems/sidetiq-0.6.3/lib/sidetiq/lock/
redis.rb:  29:in `block in synchronize'
…or/bundle/ruby/2.1.0/gems/sidekiq-4.0.1/lib/
sidekiq.rb:  84:in `block in redis'
….1.0/gems/connection_pool-2.2.0/lib/
connection_pool.rb:  64:in `block (2 levels) in with'
….1.0/gems/connection_pool-2.2.0/lib/
connection_pool.rb:  63:in `handle_interrupt'
….1.0/gems/connection_pool-2.2.0/lib/
connection_pool.rb:  63:in `block in with'
….1.0/gems/connection_pool-2.2.0/lib/
connection_pool.rb:  60:in `handle_interrupt'
….1.0/gems/connection_pool-2.2.0/lib/
connection_pool.rb:  60:in `with'
…or/bundle/ruby/2.1.0/gems/sidekiq-4.0.1/lib/
sidekiq.rb:  81:in `redis'
…uby/2.1.0/gems/sidetiq-0.6.3/lib/sidetiq/lock/
redis.rb:  22:in `synchronize'
…e/ruby/2.1.0/gems/sidetiq-0.6.3/lib/sidetiq/
handler.rb:  13:in `dispatch'
…uby/2.1.0/gems/celluloid-0.17.2/lib/celluloid/
calls.rb:  28:in `public_send'
…uby/2.1.0/gems/celluloid-0.17.2/lib/celluloid/
calls.rb:  28:in `dispatch'
…2.1.0/gems/celluloid-0.17.2/lib/celluloid/call/
sync.rb:  16:in `dispatch'
…ruby/2.1.0/gems/celluloid-0.17.2/lib/celluloid/
cell.rb:  50:in `block in dispatch'
…ruby/2.1.0/gems/celluloid-0.17.2/lib/celluloid/
cell.rb:  76:in `block in task'
…uby/2.1.0/gems/celluloid-0.17.2/lib/celluloid/
actor.rb: 339:in `block in task'
…ruby/2.1.0/gems/celluloid-0.17.2/lib/celluloid/
task.rb:  44:in `block in initialize'
….0/gems/celluloid-0.17.2/lib/celluloid/task/
fibered.rb:  14:in `block in create'
…2.1.0/gems/celluloid-0.17.2/lib/celluloid/call/
sync.rb:  45:in `value'
….1.0/gems/celluloid-0.17.2/lib/celluloid/proxy/
sync.rb:  38:in `method_missing'
….1.0/gems/celluloid-0.17.2/lib/celluloid/proxy/
cell.rb:  18:in `_send_'
…ool-0.20.5/lib/celluloid/supervision/container/
pool.rb:  45:in `_send_'
…ool-0.20.5/lib/celluloid/supervision/container/
pool.rb: 193:in `method_missing'
…uby/2.1.0/gems/celluloid-0.17.2/lib/celluloid/
calls.rb:  28:in `public_send'
…uby/2.1.0/gems/celluloid-0.17.2/lib/celluloid/
calls.rb:  28:in `dispatch'
…2.1.0/gems/celluloid-0.17.2/lib/celluloid/call/
sync.rb:  16:in `dispatch'
…ruby/2.1.0/gems/celluloid-0.17.2/lib/celluloid/
cell.rb:  50:in `block in dispatch'
…ruby/2.1.0/gems/celluloid-0.17.2/lib/celluloid/
cell.rb:  76:in `block in task'
…uby/2.1.0/gems/celluloid-0.17.2/lib/celluloid/
actor.rb: 339:in `block in task'
…ruby/2.1.0/gems/celluloid-0.17.2/lib/celluloid/
task.rb:  44:in `block in initialize'
….0/gems/celluloid-0.17.2/lib/celluloid/task/
fibered.rb:  14:in `block in create'
…2.1.0/gems/celluloid-0.17.2/lib/celluloid/call/
sync.rb:  45:in `value'
….1.0/gems/celluloid-0.17.2/lib/celluloid/proxy/
sync.rb:  38:in `method_missing'
…dle/ruby/2.1.0/gems/sidetiq-0.6.3/lib/sidetiq/
clock.rb:  47:in `block in tick'
…dle/ruby/2.1.0/gems/sidetiq-0.6.3/lib/sidetiq/
clock.rb:  46:in `each'
…dle/ruby/2.1.0/gems/sidetiq-0.6.3/lib/sidetiq/
clock.rb:  46:in `tick'
…by/2.1.0/gems/sidetiq-0.6.3/lib/sidetiq/actor/
clock.rb:  21:in `block in loop!'
…by/2.1.0/gems/sidetiq-0.6.3/lib/sidetiq/actor/
clock.rb:  31:in `time'
…by/2.1.0/gems/sidetiq-0.6.3/lib/sidetiq/actor/
clock.rb:  21:in `loop!'
…by/2.1.0/gems/sidetiq-0.6.3/lib/sidetiq/actor/
clock.rb:  22:in `block in loop!'
…uby/2.1.0/gems/celluloid-0.17.2/lib/celluloid/
actor.rb: 339:in `block in task'
…ruby/2.1.0/gems/celluloid-0.17.2/lib/celluloid/
task.rb:  44:in `block in initialize'
….0/gems/celluloid-0.17.2/lib/celluloid/task/
fibered.rb:  14:in `block in create'
@mhenrixon
Copy link
Owner

Upgrade the gem please

@TangMonk
Copy link
Author

TangMonk commented Aug 1, 2016

@mhenrixon thanks for your reply, I will try to upgrade to 4.0.18

@drewish
Copy link

drewish commented Oct 30, 2016

Can this be closed?

@RailsCarma
Copy link

RailsCarma commented Feb 28, 2017

How to resolve this error : "SidekiqUniqueJobs::ScriptError: acquire_lock.lua"

Please suggest.

@mhenrixon
Copy link
Owner

This should be less likely to appear in v5.0.0. If it still happens we can try to only ever execute the lua script with eval instead of through evalsha.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants