マネージャ再起動時のジョブスケージュールについて

こんにちは。

 

今回は、マネージャ停止中に実行予定だったジョブの挙動について記事にします。

 

まず、マニュアルには以下の記載がございます。

ーーーーーーーーーーーーーーーーーーーー

Hinemos ver.6.1 ユーザマニュアル 第3版
「14.1 javaプロセス停止中に実行予定時刻を過ぎてしまったジョブスケジュールの動作について」
ーーーーーーーーーーーーーーーーーーーー

要約すると、

・Hinemosマネージャは、実行予定時刻からの経過時間で起動失敗と判定する閾値を保持しています。

マネージャの「scheduler.dbms.misfireThreshold」にて、デフォルト3600000msec(1h)で設定されています。

・「scheduler.dbms.misfireThreshold」閾値内でHinemosマネージャが起動した場合

→起動直後に、スケジュールされていたジョブが実行されます。

・「scheduler.dbms.misfireThreshold」閾値内でHinemosマネージャが起動しなかった場合

→スケジュールされていたジョブの実行は見送られ、次回実行予定時刻に実行されます。

 

例)毎日10:00に実行されるジョブ

※青線が、次回のジョブ実行タイミングです。

 

今回は、マニュアル記載の上記挙動から、もう少し条件を付けた場合の挙動を記載します。

 

条件①

「scheduler.dbms.misfireThreshold」閾値内にジョブ実行予定が複数回ある場合(同一の実行契機ID)

 

挙動としては、Hinemosマネージャの起動直後は、実行予定時刻を過ぎたジョブスケジュールのうち、

実行契機IDごとにジョブが1度のみ実行されます。

上記の例では、3回の実行予定が過ぎていますが、

マネージャ起動直後はジョブが1度のみ実行されます。

 

条件②

「scheduler.dbms.misfireThreshold」閾値内に複数の実行契機IDが存在する場合のジョブの実行順番

 

上記の例の場合、マネージャ起動後に

実行契機ID1,2のジョブがそれぞれ1回ずつ実行されます。

 

なお、この際のジョブの実行順番は、

対象期間内の最初のスケジュール予定を元に決定されます。

 

その為、上記例では、マネージャ起動直後、

実行契機ID2のジョブ→実行契機ID1のジョブの順番で実行されます。

 

実行契機を無効にせずに、Hinemosマネージャを停止した際には、

起動時にこのような挙動をいたしますので、

メンテナンス等の際には本記事を参考にしていただければ幸いです。