Sidekiq: use delay command cause a "ERR unknown command client" error

Created on 21 Jun 2017  路  8Comments  路  Source: mperham/sidekiq

Versions

Ruby version: 2.3.0
Rails version: 4.2.6
Sidekiq version: 5.0.3

Code

Use delay command, it was work on sidekiq 5.0.2 as code
XxxxService.delay(:queue => 'xxxx').changed(id)

Error Trace

E, [2017-06-21T12:10:28.101237 #419] ERROR -- : ERR unknown command client
E, [2017-06-21T12:10:28.101334 #419] ERROR -- : /home/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/redis-3.3.3/lib/redis/client.rb:121:in 'call'
/home/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/redis-3.3.3/lib/redis/client.rb:104:in 'block in connect'
/home/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/redis-3.3.3/lib/redis/client.rb:293:in 'with_reconnect'
/home/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/redis-3.3.3/lib/redis/client.rb:100:in 'connect'
/home/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/redis-3.3.3/lib/redis/client.rb:364:in 'ensure_connected'
/home/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/redis-3.3.3/lib/redis/client.rb:221:in 'block in process'
/home/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/redis-3.3.3/lib/redis/client.rb:306:in 'logging'
/home/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/redis-3.3.3/lib/redis/client.rb:220:in 'process'
/home/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/redis-3.3.3/lib/redis/client.rb:187:in 'call_pipelined'
/home/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/redis-3.3.3/lib/redis/client.rb:157:in 'block in call_pipeline'
/home/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/redis-3.3.3/lib/redis/client.rb:293:in 'with_reconnect'
/home/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/redis-3.3.3/lib/redis/client.rb:155:in 'call_pipeline'
/home/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/redis-3.3.3/lib/redis.rb:2304:in 'block in multi'
/home/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/redis-3.3.3/lib/redis.rb:58:in 'block in synchronize'
/home/xxxx/.rbenv/versions/2.3.0/lib/ruby/2.3.0/monitor.rb:214:in 'mon_synchronize'
/home/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/redis-3.3.3/lib/redis.rb:58:in 'synchronize'
/home/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/redis-3.3.3/lib/redis.rb:2296:in 'multi'
/home/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/sidekiq-status-0.6.0/lib/sidekiq-status/storage.rb:16:in 'block in store_for_id'
/home/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/sidekiq-status-0.6.0/lib/sidekiq-status/storage.rb:102:in 'block in redis_connection'
/home/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/connection_pool-2.2.1/lib/connection_pool.rb:64:in 'block (2 levels) in with'
/home/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/connection_pool-2.2.1/lib/connection_pool.rb:63:in 'handle_interrupt'
/home/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/connection_pool-2.2.1/lib/connection_pool.rb:63:in 'block in with'
/home/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/connection_pool-2.2.1/lib/connection_pool.rb:60:in 'handle_interrupt'
/home/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/connection_pool-2.2.1/lib/connection_pool.rb:60:in 'with'
/home/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/sidekiq-status-0.6.0/lib/sidekiq-status/storage.rb:101:in 'redis_connection'
/home/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/sidekiq-status-0.6.0/lib/sidekiq-status/storage.rb:15:in 'store_for_id'
/home/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/sidekiq-status-0.6.0/lib/sidekiq-status/client_middleware.rb:26:in 'call'
/home/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/sidekiq-5.0.3/lib/sidekiq/middleware/chain.rb:130:in 'block in invoke'
/home/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/sidekiq-5.0.3/lib/sidekiq/middleware/chain.rb:133:in 'invoke'
/home/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/sidekiq-5.0.3/lib/sidekiq/client.rb:209:in 'process_single'
/home/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/sidekiq-5.0.3/lib/sidekiq/client.rb:68:in 'push'
/home/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/sidekiq-5.0.3/lib/sidekiq/worker.rb:142:in 'client_push'
/home/xxxx/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/sidekiq-5.0.3/lib/sidekiq/extensions/generic_proxy.rb:26:in 'method_missing'

Most helpful comment

If you use master, you can now add a nil :id attribute to disable the use of CLIENT SETNAME.

config.redis = { :id => nil }

All 8 comments

Which Redis service provider are you using?

It looks like your Redis does not allow/provide the CLIENT SETNAME command.

If you use master, you can now add a nil :id attribute to disable the use of CLIENT SETNAME.

config.redis = { :id => nil }

If the renamed CLIENT command is known, you can remap it:

https://github.com/redis/redis-rb/pull/586#issuecomment-310629204

I confirm this error is caused by the redis provider, after update the redis provider's redis version, sidekiq 5.0.3 works fine now.

I'm still seeing this error, even though just upgraded Redis to 4.0.1 and Sidekiq 5.0.4

@luizkowalski Put this in your Gemfile and run bundle up redis:

gem "redis", "3.3.3"

Just upgrade redis didn't worked but add redis-namespace fixed

thanks @mperham

Was this page helpful?
0 / 5 - 0 ratings