午前 3 時の時間依存性があり、メインフレーム ジョブ (この場合は常に成功する job_m) の正常な完了を待機することになっている Autosys ジョブ (job_a と呼びましょう) があります。Job_m はメインフレーム上の OPC スケジューラを介して実行され、ジョブの完了が Autosys に通知されます。午前2時から午前6時まで、いつでも実行できます。
Autosys がどのように機能するかについての私の理解では、job_m が完了するとデータベース内のテーブルにエントリが書き込まれ、job_a がその依存関係をチェックするときに、このテーブルを調べて job_m のステータスを確認します。このステータスは自動的にクリアされません。その結果、job_m が同じ日に実行されることのみに関心がある場合でも、job_m が最初に正常に実行された後に、ジョブの依存関係が常に満たされます。
Day 1 4am: job_m completes Day 1 4:01am: job_a runs, since Day 1 4am run of job_m was successful Day 2 3am: job_a runs, since Day 1 4am run of job_m was successful Day 2 5am: job_m completes
現在提案されている回避策は、テーブルを定期的にチェックし、job_m のステータスが過去 6 時間以内に変更された場合にのみ完了するジョブ (job_c) を用意することです。
Day 1 3am: job_c starts, sees no status change for job_m within the last 6 hours Day 1 4am: job_m completes Day 1 4:01am: job_c completes Day 1 4:02am: job_a runs following completion of job_c Day 2 3am: job_c starts, sees no status change for job_m within the last 6 hours Day 2 5am: job_m completes Day 2 5:01am: job_c completes Day 2 5:02am: job_a runs following completion of job_c
テーブル内の job_m のステータスをリセットするために使用できる Autosys コマンドはありますか? そうでない場合、上記で概説したものよりもこの依存関係を強制するより良い方法はありますか?