DiffDaily Deep & Concise - OSS変更の定点観測
トップに戻る

rails/solid_queue

https://github.com/rails/solid_queue

`lock_candidates`内で発生する意図しない`FOR UPDATE`クエリを抑制

コミット408b84cで`select_candidates`の戻り値が`ActiveRecord::Relation`に変わった副作用として、`lock_candidates`内の`none?`が不要な`SELECT ... FOR UPDATE SKIP LOCKED`クエリを発行するようになっていた。`.to_a`を追加してリレーションを即時評価することで余分なロッキングクエリを排除し、高負荷環境でのポーリング性能を改善する。

2026年03月02日 Claude Sonnet 4.6

MySQLのクエリプランナーミスを回避するインデックスヒントの追加

MySQLのクエリプランナーミスを回避するため、ブロックされたジョブ解放クエリにインデックスヒントを追加。SQLコメント形式を採用し、他のデータベースエンジンとの互換性を維持しながら、並行実行制御の競合状態を解決しています。

2026年02月22日 Claude Sonnet 4.5

クラス削除後のジョブに対する並行制御をスキップ

ジョブクラスが削除された場合でも並行制御をバイパスし、キュー全体のブロックを防ぐ変更。`concurrency_limited?`に`job_class`の存在チェックを追加することで、削除されたクラスのジョブは通常のジョブとして処理され、`NameError`で失敗して`FailedExecution`として記録されます。

2026年02月19日 Claude Sonnet 4.5

プロセスレコードの削除競合を安全に処理するヘルスチェック機構の改善

Solid Queueのヘルスチェック処理に安全なナビゲーション演算子を追加し、プロセスレコードの削除と再登録の間に発生するタイミング競合を解決しました。これにより、分散環境での堅牢性が向上します。

2026年02月19日 Claude Sonnet 4.5

Pumaプラグインでのnil pid処理を追加

Pumaプラグインにおいて、コンテナ環境での fork 失敗時に solid_queue_pid が nil になる場合の早期リターンを追加。これにより、シャットダウン時の TypeError を防ぎ、制約のある環境でも安全に動作するようになった。

2026年02月19日 Claude Sonnet 4.5

既存のFailedExecution記録がある場合のクラッシュを修正

ジョブの失敗記録時に`TypeError`が発生してSolid Queueが起動できなくなる問題を修正。`create_or_find_by!`を明示的な`create!`と例外処理に置き換え、既存レコードがある場合は新しいエラー情報で更新する実装に変更した。

2026年02月19日 Claude Sonnet 4.5

終了したスレッドの process_instances からの削除漏れを修正

Solid Queue 1.3.0以降で発生していた、スレッド終了時のクラッシュを修正。`replace_thread`が`process_instances`からエントリを削除しないため、同じ終了スレッドが繰り返し検出され`NoMethodError`が発生していた問題に対処。`ForkSupervisor`と同じガードパターンを適用し、管理データ構造の一貫性を確立。

2026年02月19日 Claude Sonnet 4.5

複数CRON生成を検出して警告する機能を追加

Solid Queueで、自然言語のスケジュール設定が複数のCRON式を生成する場合に、最初の式のみが使用され残りが無視される問題を解決。Fugitの `multi: :fail` オプションを使用して複数CRON生成を検出し、ユーザーに適切なエラーメッセージを表示する機能を追加。

2026年02月18日 Claude Sonnet 4.5

環境変数によるスーパーバイザーモード指定が機能しない問題を修正

環境変数 `SOLID_QUEUE_SUPERVISOR_MODE` がスーパーバイザーモードの制御に使用できない不具合を修正。CLIクラスの `--mode` オプションからデフォルト値を削除し、Configurationクラスで環境変数を参照できるようにした。

2026年02月18日 Claude Sonnet 4.5

並行実行制御における競合状態の修正

Solid Queueの並行実行制御で、ジョブ完了時のブロック解除が新規BlockedExecutionを見逃す競合状態を修正。セマフォ確認時にFOR UPDATEロックを追加し、エンキューとsignal処理の原子性を保証。

2026年02月18日 Claude Sonnet 4.5

[rails/solid_queue] スレッド置換時の未定義変数参照を修正

Solid Queueの非同期スーパーバイザーでスレッド置換時に未定義変数を参照していたバグを修正。併せて、プロセス登録待機やシャットダウン処理に関する複数のテストの不安定性を解消し、テストスイート全体の信頼性を向上させました。

2026年01月16日 Claude Sonnet 4.5

[solid_queue] ワーカープロセス終了時のNoMethodError修正

ワーカープロセスがSIGTERMなどのシグナルで終了した際、status.exitstaがnilを返してNoMethodErrorが発生する問題を修正。演算子の優先順位を括弧で明示し、to_iでnilを安全に0に変換することで、プロセス終了時の安定性を向上させました。

2026年01月11日 Claude Sonnet 4.5

Solid Queueにasyncモードを追加し、メモリ使用量を60%削減

Solid Queueにasyncモードが追加され、workerとdispatcherを同一プロセス内のスレッドとして実行できるようになりました。1GBサーバーでのメモリ使用量が700MBから270MBへ削減され、小規模環境での運用が可能になります。

2026年01月09日 Claude Sonnet 4.5

`enqueue_after_transaction_commit` のバージョン変遷に対応したテスト修正

Rails 7.1〜8.2にかけて `enqueue_after_transaction_commit` 設定が複数回変遷したことを受け、Solid Queueのテストコードをバージョン番号のハードコードから設定値の動的検査へと変更しました。Rails 8.2で遅延エンキューが再びデフォルト有効化されたことへの対応で、将来の挙動変化にも追従できる堅牢なテスト条件分岐を実現しています。

2026年01月07日 Claude Sonnet 4.6

© 2026 DiffDaily - Powered by AI

タケユー・ウェブ