2017-12-19 15 views
2

私は昨年、自分の仕事のプロセスにまともな変更を加えました。それぞれのモデルにafter_commit代わりのafter_createからそれをトリガーするだけでなく、ロジックをクリーンアップし、コーナーケースにOld Sidekiqの仕事は永遠に再試行します。サイドキックのUIに関する可視性がない

をカバーするようなものは、私は私のHerokuのRubyの上に私のPapertrailログに何度も繰り返しヶ月前に再試行するから私の古いジョブを参照してくださいRailsアプリ。新しいものは問題なく、私の変更は問題を解決したと信じています。問題は、これらの古い仕事をすべて停止するにはどうすればいいのですか?また、私はSidekiqのUIでそれを見ませんか? SidekiqのUIには完了したジョブの数だけが表示されますが、失敗、デッド、ビジー、またはエンキューされたジョブはありません。それは0と言われていますが、ログは激しく乱れています。

私はジョブIDを記録しますが、それはyou cannot kill a specific jobです。サーバーを何度も再起動しました。毎日彼らは再び試みます。

最近のすべてのジョブは問題ありません。先月以降のものは何も繰り返されません。 after_createトリガージョブを持つ5000個のオブジェクトのうち、再試行しているのは1-60だけです。他の人が合格し、jid年代を知っている場合は、レールのコンソールからこれを行うことができます

答えて

1

罰金です:

queue = Sidekiq::Queue.new("my_queue") 
queue.each do |job| 
    job.delete if job.jid == 'abcdef1234567890' 
end 

それはあなたが行うことができますretrysetになら:

query = Sidekiq::RetrySet.new 
query.each do |job| 
    job.delete if job.jid == 'abcdef1234567890' 
end 

をした場合ジョブが機内であるため削除できません。作業者プロセスを数分間停止(シャットダウン)してから、上記を実行してください。

+0

かなり単純ですが、これらのオプションは両方ともループ内で0の結果をもたらします。私は単に削除する代わりにjidを印刷していました。私はすべての '新しい'ジョブがログとsidekiqキューに表示されるので、同じsidekiqインスタンスを知っていますが、これらの '古い'ものはログにのみ表示されます - サイドキーキューではありません – MingMan

+0

jid再試行時に変更されます。あなたがルックアップのために行うことができるもう一つの適格な仕事の要因がありますか?多分あなたが以前の仕事から来たと言うことができる 'job.args'の中の何か? – Anthony

+0

私は間違っているかもしれません - どのキューにもアイテムがありません。削除行(または私の場合はputs行)にヒットしません。私が考えることができるのは、ある時点でキューの名前が変更されたということですが、私は自分のredisインスタンスを見て、鉱山( "証明書")以外のキュー名は表示されません – MingMan

関連する問題