Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option 使用の手引


3.1.8 サービス関数異常時のRPC応答メッセージ送信

同期応答型RPCまたは非同期応答型RPCの場合,トランザクション処理結果に従ってRPC応答メッセージを送信できます。また,サービス関数の処理中に障害(スレッドダウン)が発生した場合に,RPC応答メッセージの送信をERRTRN3の終了時まで抑止できます。

〈この項の構成〉

(1) ERRTRN3によるRPC応答メッセージ送信

通常の応答型RPCでは,RPC受信したサービストランザクション起動時のサービス関数の引数として指定した応答データ格納領域(out)にUAPが応答データを格納します。格納された応答データを,サービス関数終了時にRPC応答メッセージとして送信します。

サービストランザクションで障害(スレッドダウン)発生時,ERRTRN3でRPC応答送信をするかどうかを,RPC関連定義のrpc_reply_errtrn3で指定できます。

RPC応答メッセージの送信をERRTRN3の終了時まで抑止する場合は,ERRTRN3によるRPC応答メッセージ送信機能を使用します。この機能を使用すると,RPC応答メッセージの送信をERRTRN3の終了時まで抑止し,RPC送信元にUAPが障害要因を連絡できます。この機能を使用するには,次のように定義を指定する必要があります。

rpc_reply_errtrn3に「Y」を指定した場合,サービストランザクション実行中のスレッドダウンを検知すると,ERRTRN3サービス終了時にそのサービストランザクションの応答送信をします。この応答送信は,ERRTRN3サービスで作成したRPC応答メッセージを使用します。

RPC応答メッセージは,ERRTRN3トランザクションインタフェース情報の応答(out)およびサービス関数の応答の長さ(out_len)に設定してください。

なお,サービストランザクション起動時のサービス関数とERRTRN3サービス関数のデータは,ユーザが引き継ぐ必要があります。

ただし,そのトランザクションが,リモートAPI機能(rap)による自サービスグループに対する代理実行要求の場合は,この機能を使用できません。ERRTRN3によるRPC応答メッセージ送信処理の流れを次の図に示します。

図3‒9 ERRTRN3によるRPC応答メッセージの送信処理の流れ

[図データ]

この機能は次の動作条件がすべて満たされた場合に動作します。

(2) 障害時処理

サービストランザクションの異常終了検知からERRTRN3起動までの間にプロセスダウンが発生した場合,TP1/EEでの再開始時に該当するクライアントUAP(RPC要求元)に対して,RPCエラー応答を送信します。この場合,RPC応答メッセージは返信できません。クライアントUAP(RPC要求元)には,次のエラー要因を返します。

エラー要因についてはrpc_reply_tp1mode_downオペランドの設定値によって変わります。

なお,ERRTRN3内でスレッドダウンまたはプロセスダウンが発生した場合は,該当するクライアントUAP(RPC要求元)に対して,上記のRPCエラー応答を返信します。

ERRTRN3で応答送信に失敗した場合は,KFSB50396-Eメッセージを出力して処理を継続します。

また,ERRTRN3サービスは必ずユーザサービス関連定義(errtrn3オペランド)に設定する必要があります。

この機能使用時にerrtrn3オペランドの設定がない場合には,定義不正でTP1/EEプロセスの起動に失敗します。