7.6.3 未決着トランザクション待機スクリプト(wait_transactions.sh)
スケールインなどによって各コンポーネントがシャットダウンする際に未決着トランザクションがなくなるまで待機するスクリプトです。各コンポーネントのpreStopフックで使用します。
<コマンド処理内容>
このコマンド開始直後に20秒間待機します。これは、KubernetesがPod終了開始直後に実施する「Serviceのリクエスト転送先リストからのPodの宛先の削除」が完了するのを待つためです。これによって、このコマンドが後続で未決着トランザクションの待機処理を開始するまでに、新規トランザクション処理のリクエストの流入がない状態にできます。
そのあと、未決着トランザクションの有無を判定するために、localhostに対してコマンド引数で指定されたHTTPポート番号の「トランザクションサマリAPI(/hmppcto/transactions/summary)」へGETリクエストを実行し、JSONレスポンスに含まれる「未決着トランザクション数("active"キー)」の値が「0」の場合は、ステータスコード「0」で正常終了します。
一方、値が「非0」の場合は、コマンド引数で指定されたリトライ回数・リトライ間隔秒数でリトライします。最大リトライ回数を超えた場合は、ステータスコード「1」で異常終了します。
preStopフックが正常終了した場合および異常終了した場合のどちらの場合も、Podは削除されます。
「トランザクションサマリAPI(/hmppcto/transactions/summary)」の詳細については、「(b) エンドポイント」の各コンポーネントの記載をご参照ください。
<コマンド構文>
wait_transactions.sh△<リトライ回数>△<リトライ間隔秒数>△<接続タイムアウト秒数>△<応答タイムアウト秒数> △<HTTPポート番号>
- (凡例)
-
△:半角スペース1文字
<実行例>
wait_transactions.sh 30 10 10 10 20555
<コマンド引数チェック仕様>
次の記条件をどちらか1つでも満たしていない場合は、KFSG62101-Eメッセージを出力し、ステータスコード「1」で異常終了します。
-
コマンド引数の数が「5 以上」である
-
各コマンド引数の値が「整数値」である
<バージョン表示オプション>
次のようにコマンドに「--version」オプションを指定して実行すると、該当するスクリプト名およびバージョン番号を表示して終了します。
wait_transactions.sh△--version
- (凡例)
-
△:半角スペース1文字
<コマンドの実行結果>
wait_transactions.sh△V.R.S
- (凡例)
-
△:半角スペース1文字
V.R.S:バージョン
<コマンドの実行結果の例>
wait_transactions.sh 1.0.0