2015-09-22 1 views
0

Я использую sidekiq 3.4.2 и 3.0.3 Redis для некоторых длительных рабочих мест и примерно через две ~ четыре часа я получаю следующее сообщение об ошибке:Redis EXECABORT Сделка отменена из-за предыдущих ошибок. (Redis :: CommandError) Sidekiq rror

ERROR: heartbeat: EXECABORT Transaction discarded because of previous errors.

EXECABORT Transaction discarded because of previous errors. /home/deployer/apps/wripl-capture/shared/bundle/ruby/2.2.0/gems/redis-3.2.1/lib/redis/pipeline.rb:79:in finish' /home/deployer/apps/wripl-capture/shared/bundle/ruby/2.2.0/gems/redis-3.2.1/lib/redis/client.rb:149:in block in call_pipeline' /home/deployer/apps/wripl-capture/shared/bundle/ruby/2.2.0/gems/redis-3.2.1/lib/redis/client.rb:279:in with_reconnect' /home/deployer/apps/wripl-capture/shared/bundle/ruby/2.2.0/gems/redis-3.2.1/lib/redis/client.rb:147:in call_pipeline' /home/deployer/apps/wripl-capture/shared/bundle/ruby/2.2.0/gems/redis-3.2.1/lib/redis.rb:2182:in block in multi' /home/deployer/apps/wripl-capture/shared/bundle/ruby/2.2.0/gems/redis-3.2.1/lib/redis.rb:37:in block in synchronize' /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/monitor.rb:211:in `mon_synchronize'

Все убит (никаких заданий в очереди не было), если я не перезапущу sidekiq, это не то, что мне нужно сделать.

Любая идея, что происходит?

ответ

1

Я бы предположил, что ваш экземпляр Redis вышел из памяти.

+0

Я думаю, что вы правы, но я не знаю как. Я буду копаться в нем. – slotishtype

1

multi блок подавляет фактическое сообщение об ошибке. Запустите свой код без блока multi, чтобы увидеть исходное сообщение об ошибке.

Я попытался выполнить весь код в блоке mutli в блоке try/rescue, он все еще не заметил исключения.

Смежные вопросы