1

レコードの「ステータス」列を変更した後に開始されるシングルスレッドの Quartz ジョブがあります。ジョブには、検索するレコードのプライマリ ID が渡されます。奇妙な理由で、クォーツ ジョブは元のステータス値を参照します。

ジョブには、毎秒最大 1 分までルックアップを再試行するロジックがあります。最初は、休止状態が古いオブジェクトを返す可能性があると思ったので、 a を追加しましたsession.clear()が、違いはありませんでした。次に、休止状態をバイパスしてデータを取り込むために a を追加しましたjdbcTemplate.queryForMapが、それも古いデータを参照しています。

Quartz ジョブが古い値をログに記録している間、ショー ビューとデータベースに対して手動で呼び出した SQL クエリに新しい値が表示されます。version プロパティを確認したところ、変更されていることがわかりましたが、Quartz ジョブには古い値が含まれています。

Quartz ジョブが変更を認識しない理由はありますか?

奇妙なことに、このロジックは一部のサーバーで完全に正常に機能し、他のサーバーでは一貫して失敗し、他のサーバーでは定期的に失敗します。

環境は次のもので構成されます。

  • グレイルズ 1.3.7
  • MySQL
  • Linux
  • トムキャット
4

0 に答える 0