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

use delay command cause a "ERR unknown command client" error #3521

Closed
RicottaZhang opened this issue Jun 21, 2017 · 8 comments
Closed

use delay command cause a "ERR unknown command client" error #3521

RicottaZhang opened this issue Jun 21, 2017 · 8 comments

Comments

@RicottaZhang
Copy link

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'
@mperham
Copy link
Collaborator

mperham commented Jun 21, 2017

Which Redis service provider are you using?

@mperham
Copy link
Collaborator

mperham commented Jun 21, 2017

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

@mperham
Copy link
Collaborator

mperham commented Jun 21, 2017

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

config.redis = { :id => nil }

@vassilevsky
Copy link

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

redis/redis-rb#586 (comment)

@RicottaZhang
Copy link
Author

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.

@luizkowalski
Copy link

luizkowalski commented Sep 19, 2017

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

@mperham
Copy link
Collaborator

mperham commented Sep 19, 2017

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

gem "redis", "3.3.3"

@luizkowalski
Copy link

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

thanks @mperham

maxlazio pushed a commit to gitlabhq/omnibus-gitlab that referenced this issue Mar 5, 2019
MemoryStore is a Redis instance that has disabled commands such as
CLIENT and MONITOR. Sidekiq calls CLIENT to set an ID for debugging, but
this can be disabled by setting the `id` to `nil`
(sidekiq/sidekiq#3521).

This is done in `/etc/gitlab/gitlab.rb` via:

gitlab_rails['redis_enable_client'] = false

By default, this is set to `true`.

Closes https://gitlab.com/gitlab-org/omnibus-gitlab/issues/4149
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