JP1/Automatic Job Management System 3 設計ガイド(業務設計編)
ジョブに定義した実行ファイルが異常終了した場合に,ジョブをリトライすることで一時的なエラーを回復できることがあります。リトライによって回復できるジョブには,ジョブの異常終了時に自動的にジョブをリトライさせるように定義することで,実行ファイルに一時的なエラーが発生しても業務を継続できます。
ジョブに指定した実行ファイルが異常終了したときに,自動的にリトライすることを自動リトライといい,自動リトライによってジョブを実行することをリトライ実行といいます。
自動リトライした場合の,ジョブの動作を次の図に示します。
図2-98 自動リトライした場合のジョブの動作
自動リトライする場合,ジョブに定義した実行ファイルが異常終了しても,ジョブは「異常検出終了」状態になりません。一定の間隔を待ってから,ジョブが自動リトライされます。
自動リトライの概要について説明します。
次の条件を満たすジョブの実行ファイルがエラーになった場合,ジョブは「異常検出終了」状態にならないで,自動リトライします。
自動リトライの実行方法に関する設定を,リトライ設定と呼びます。
リトライ設定の各項目について,次に示します。
表2-31 自動リトライの実行方法に関する設定項目
| 項番 | 設定項目 | 設定内容 |
|---|---|---|
| 1 | 異常終了時リトライ | ジョブに指定した実行ファイルがエラーになったときに,自動リトライするかどうかを指定します。 |
| 2 | 終了コード | リトライ実行する終了コードの範囲を指定します。 |
| 3 | 最大リトライ回数 | リトライ実行する最大回数を指定します。 |
| 4 | リトライ間隔 | ジョブの実行ファイルがエラーになってから,リトライ実行するまでの間隔を指定します。 |
リトライ設定をしているジョブが異常終了したときの動作を,次の図に示します。
図2-99 リトライ設定をしているジョブが異常終了したときの動作
リトライ設定をしているジョブに指定した実行ファイルが異常終了すると,リトライ間隔で設定した時間が経過してから,リトライ実行されます。リトライ実行は,ジョブが正常終了または警告終了するか,もしくはリトライ実行回数が最大リトライ回数に達するまで繰り返されます。
リトライ設定の内容は,JP1/AJS3 - Viewの画面およびコマンドで確認できます。確認できるJP1/AJS3 - Viewの画面およびコマンドと,確認できるリトライ設定を次に示します。
表2-32 リトライ設定を確認できるJP1/AJS3 - Viewの画面およびコマンド
| 項番 | 確認できるJP1/AJS3 - Viewの画面およびコマンド | 確認できるリトライ設定 |
|---|---|---|
| 1 | [ジョブネットエディタ]ウィンドウ | 異常終了時リトライ |
| 2 | [検索]ウィンドウ |
|
| 3 | ajsprintコマンド | すべてのリトライ設定 |
自動リトライの実行状況に関する次の情報を,リトライ情報と呼びます。
リトライ情報について,次に説明します。
表2-33 リトライ状態一覧
| 項番 | リトライ状態 | リトライ状態の意味 | 対応するジョブの状態 |
|---|---|---|---|
| 1 | リトライ待ち | ジョブの実行ファイルがエラーになって,リトライ間隔に設定した時間が経過するのを待っている。 |
|
| 2 | リトライ実行中 | 自動リトライによって,ジョブが「実行待ち」,「キューイング」,または「実行中」状態である。 |
|
| 3 | リトライ終了 | 自動リトライが終了した。 |
|
図2-100 自動リトライが実行されたときの状態遷移
図2-102 リトライ登録日時の更新
図2-103 リトライ開始日時の更新
リトライ情報は,JP1/AJS3 - Viewの画面およびコマンドで確認できます。確認できるJP1/AJS3 - Viewの画面およびコマンドと,確認できるリトライ情報を次に示します。
表2-34 リトライ情報を確認できるJP1/AJS3 - Viewの画面およびコマンド
| 項番 | 確認できるJP1/AJS3 - Viewの画面およびコマンド | 確認できるリトライ情報 |
|---|---|---|
| 1 |
|
すべてのリトライ情報 |
| 2 |
|
|
| 3 | [検索]ウィンドウ | リトライ実行回数 |
複数回リトライ実行された場合,JP1/AJS3 - Viewの画面およびajsshowコマンドで確認できるのは,最後のリトライ実行の結果です。リトライ実行ごとの結果を知りたい場合は,JP1イベント,スケジューラーログ,または[実行結果詳細]ダイアログボックスで確認してください。
ここでは,リトライ設定のあるジョブの,打ち切り時間および終了遅延監視について説明します。
打ち切り時間とリトライ設定の両方を設定した場合,打ち切り時間を監視するための経過時間は,リトライ実行ごとにカウントし直されます。
複数回のリトライ実行を含む,ジョブ全体の経過時間を監視したい場合は,ジョブネットの実行所要時間による終了遅延監視で監視してください。
リトライ中の打ち切り時間の監視を,次の図に示します。
図2-104 リトライ中の打ち切り時間監視
この例では,1回目のリトライ実行中に,ジョブの実行開始から20分が経過しています。しかし,打ち切り時間を監視するための経過時間は,リトライ実行開始時点からカウントし直されるため,「強制終了」状態にはなりません。2回目のリトライ実行中にリトライ実行開始から20分が経過すると,「強制終了」状態になります。
なお,打ち切り時間が経過してジョブが「強制終了」状態になった場合,最大リトライ回数に達していなくても,それ以降はリトライ実行しません。
終了遅延監視とリトライ設定の両方を設定した場合,終了遅延を監視するための経過時間はリトライ実行ごとにカウントし直されます。
複数回のリトライ実行を含む,ジョブ全体の経過時間を監視したい場合は,ジョブネットの実行所要時間による終了遅延監視で監視してください。
リトライ中の終了遅延監視を,次の図に示します。
図2-105 リトライ中の終了遅延監視
この例では,1回目のリトライ実行中に,ジョブの実行開始から20分が経過しています。しかし,終了遅延を監視するための経過時間は,リトライ実行開始時点からカウントし直されるため,終了遅延は「あり」にはなりません。2回目のリトライ実行中にリトライ実行開始から20分が経過すると,終了遅延が「あり」になります。終了遅延が「あり」になったあとにリトライ実行されると,終了遅延は「なし」になります。
最後のリトライ実行の結果,終了遅延が「あり」だった場合,ジョブが終了したあとも遅延情報が表示されます。
リトライ設定のあるジョブを実行シミュレーションする場合,自動リトライによるリトライ待ちの時間や,リトライ実行の時間を含めてシミュレーションされます。
リトライ設定のあるジョブを実行シミュレーションした例を,次の図に示します。
図2-106 リトライ設定のあるジョブの実行シミュレーション
この例では,ジョブの実行時間を「20分」とします。ジョブ定義時には,最大リトライ回数に「4回」,リトライ間隔に「5分」を指定しています。この場合のシミュレーション結果は,最初のジョブ実行時間,4回分のリトライ実行の実行時間,およびそれぞれのリトライ実行前のリトライ間隔をすべて合計した120分です。
リトライ設定のあるジョブ,リトライ設定のあるジョブの先行ユニット,またはリトライ設定のあるジョブの上位ユニットに対しての操作について説明します。
自動リトライが終了したジョブを再実行した場合,リトライ中に先行ジョブから再実行した場合,およびリトライ中に先行ユニットだけを再実行した場合の動作について説明します。
自動リトライが終了したジョブを再実行すると,再実行した時点でリトライ実行回数がリセットされます。
自動リトライが終了したジョブを再実行した場合の動作を,次の図に示します。
図2-107 自動リトライが終了したジョブの再実行
ジョブが再実行されると,リトライ実行回数は「0」になります。
リトライ中に先行ユニットから再実行すると,実行回数がリセットされ,リトライ中のジョブは「先行終了待ち」状態に遷移して先行ユニットの終了を待ちます。
リトライ中のジョブが「先行終了待ち」状態で先行ユニットの終了を待つタイミングは,先行ユニットを再実行した時点での,リトライ中のジョブの状態によって異なります。
リトライ中に先行ユニットから再実行したときの動作を説明します。
図2-108 リトライ中のジョブが「先行終了待ち」状態の場合に先行ユニットから再実行したときの動作
図2-109 リトライ中のジョブが「実行中」状態の場合に先行ユニットから再実行したときの動作
リトライ中に先行ユニットだけを再実行すると,リトライ実行が終了してから「先行終了待ち」状態に遷移してリトライ間隔が経過するのを待ちます。リトライ間隔が経過しても先行ユニットが終了していないときは,先行ユニットの終了を待ち,そのあとリトライ実行回数に達するまでリトライ実行されます。
リトライ中に先行ユニットだけ再実行したときの動作を説明します。
図2-110 リトライ中のジョブが「先行終了待ち」状態の場合に先行ユニットだけ再実行したときの動作
図2-111 リトライ中のジョブが「実行中」状態の場合に先行ユニットだけ再実行したときの動作
リトライ中のジョブを含むルートジョブネットは,サスペンド状態にしたり,サスペンド状態を解除したりできます。
サスペンド中は,ジョブが異常終了してもリトライ実行されません。サスペンドを解除すると,リトライ間隔に設定した時間を待ってからリトライ実行されます。
サスペンド操作の詳細については,マニュアル「JP1/Automatic Job Management System 3 導入ガイド 4.5.17 ジョブネットの実行登録を解除しないでジョブネットやジョブの定義を変更する」を参照してください。
リトライ中のジョブを含むルートジョブネットを中断した場合,ルートジョブネットは「中断」状態に,リトライ設定のあるジョブは「未実行終了」状態になります。
リトライ中のジョブが「未実行終了」状態になるタイミングは,リトライ中のジョブの状態によって異なります。
ルートジョブネットを中断した場合の,リトライ中のジョブの動作を次に示します。
図2-112 リトライ中のジョブが「先行終了待ち」状態の場合にルートジョブネットを中断したときの動作
図2-113 リトライ中のジョブが「実行中」の場合にルートジョブネットを中断したときの動作
リトライ中のジョブを含むルートジョブネットを中断すると,ジョブに定義した実行ファイルのエラーが解消されないまま,ジョブは「未実行終了」状態に,リトライ状態は「リトライ終了」になります。
自動リトライによって,状態が「実行中」,「キューイング」,または「実行待ち」(実行先サービスがキューレスに設定されているジョブの場合)になったジョブを状態変更で終了状態にしたり,すでに終了状態のジョブを任意の終了状態に変更したりできます。また,強制終了することもできます。状態変更または強制終了した場合,状態変更後の終了状態や終了コードに関係なく,終了状態になったジョブは自動リトライされません。
リトライ中にジョブの定義内容を変更した場合,環境設定パラメーターUNITDEFINERELOADに「yes」を設定していると,リトライ実行のたびにジョブの定義が再読み込みされます。そのため,リトライ中にジョブの定義を変更すると,変更後に実行されるリトライ実行から,新しい定義内容が有効になります。
定義内容を変更したときの動作については,マニュアル「JP1/Automatic Job Management System 3 運用ガイド 8.4 実行登録中にユニット定義情報を変更する」を参照してください。
なお,リトライ状態が「リトライ待ち」のときにリトライ設定を削除した場合,一回だけリトライ実行します。リトライ実行が終了したら,それ以降はリトライ実行しません。
リトライ設定のあるジョブに待ち合わせ条件を設定している場合,一度待ち合わせ状態が「完了」になれば,リトライ実行のときには待ち合わせません。リトライ状態が「リトライ待ち」になる前に,待ち合わせ条件を有効にして待ち合わせ状態を「未完了(手動)」に変更しても,待ち合わせ条件の成立を待たないですぐにリトライ間隔の経過を待ちます。
リトライ設定のあるジョブに待ち合わせ条件を設定した場合の動作を,次の図に示します。
図2-114 リトライ設定のあるジョブに待ち合わせ条件を設定した場合の動作
リトライ実行されると,リトライ情報以外にも更新される情報があります。ジョブ実行中にリトライ実行で更新される情報を参照する場合,参照するタイミングによって参照結果が異なることがあるので,影響を考慮してジョブを定義してください。
リトライ実行によって更新される情報を,次に示します。
表2-35 リトライ実行によって更新される情報一覧
| 項番 | 更新情報 | 更新内容 |
|---|---|---|
| 1 | 環境変数JP1JobID | リトライ実行時のジョブIDに更新されます。 |
| 2 | 標準出力ファイル |
|
| 3 | 標準エラー出力ファイル |
|
| 4 | 転送ファイル | リトライ実行のたびに,ファイルは転送されます。 |
| 5 | 実行結果詳細 | リトライ実行のたびに,追加書きされます。 |
スケジューラーサービスを停止して再起動した場合,スケジューラーサービスの起動モードに応じて,リトライ中のジョブも通常のジョブと同様の状態になります。ただし,次の点が異なります。
図2-115 ホットスタートでスケジューラーサービスを起動した場合の動作
起動モード別のジョブの状態については,マニュアル「JP1/Automatic Job Management System 3 運用ガイド 7.2.1 JP1/AJS3起動時の動作を一時的に変更する」を参照してください。
自動リトライを使用する場合の注意事項を,次に示します。
Copyright (C) 2012, Hitachi, Ltd.
Copyright (C) 2012, Hitachi Solutions, Ltd.