バージョン
- sidekiq: 5.2.7
- activerecord-session_store: 1.1.3
何が起きたのか
ActiveJobのアダプターにresqueを使っていたプロジェクトで、アダプターをresqueに変えようとしていました。そこで、諸所の設定を修正後、ActiveJobにキューイングしても、うんともすんとも言わない…。sidekiqは起動しているにも関わらず、全く何も起きない…。
調査開始
qiitaの記事を見かけました。
これによると、rack 2.0.7
から2.0.8
になると、セッション関係でエラーが起きるようになるとか…。そして、2.0.9
で直った、とあります。
うちのrackのバージョンは…2.2.3
。あれ?
セッションを無効にしてみる
なにはともあれ、上記の記事を参考にセッションを無効にしてみます。
require 'sidekiq/web' Sidekiq::Web.set :sessions, false # <= セッションを無効化 Rails.application.routes.draw do # 他は省略 mount Sidekiq::Web => '/sidekiq' if Rails.env.development? end
すると、今までキューイングされていたジョブが一斉に処理され始めました…。ActiveJobのキューの実行がSidekiq::Webのセッションに依存してるのか??? しかも別のプロジェクトではSidekiq::Webを見ても普通に見れましたし、その際にセッションを無効にする必要などありませんでした。
activerecord-session_storeのPRを発見
セッションを保存している場所に問題があるかと思い、検索キーワードを変更してみたところ、こういうPull Requestを発見。
まだOpenのままで取り込まれていない模様…。issueを見るとactiverecord-session_storeとrackのバージョンのものがチラホラと…。あまり開発が進んでいないのでしょうか?
対応
とりあえず、Sidekiq::Webさえ使わなければActiveJob自体はちゃんと動いたので、Web UIをひとまず諦めることとしました。