2.5.4 RPC応答の送信タイミング変更機能

TP1キャッシュでCL連携による系切り替え機能使用時,コミットと同期して行うRPC応答メッセージの送信処理のタイミングをCL連携の転送処理の結果と同期するための機能です。

TP1キャッシュのCLサーバで,RPC応答と転送処理のタイミングを変更するものです。

この機能の使用有無は,トランザクション関連定義のtrn_cl_rpc_reply_timingオペランドで指定できます。

この機能を使用するときに変更できる処理を次に示します。

送信タイミングの変更
永続化しない(RPC関連定義のrpc_recv_permanenceオペランドにY指定なし)同期応答型RPC/非同期応答型RPCの応答送信を,永続化する(RPC関連定義のrpc_recv_permanenceオペランドにY指定)ときの応答送信と同様に,転送処理によってリソースの永続化が完了したあとに行います。
実行系孤立状態を検知したときの動作の変更
転送失敗によって実行系孤立状態を検知した場合,RPC応答メッセージの送信はロールバックしたときと同様の動作をするように変更します。ただし,ERRTRNRは起動しません。

次の条件をすべて満たした場合,トランザクション結果に加え,転送処理の結果をRPC応答メッセージに反映できます。

RPC応答メッセージの内容を,次の表に示します。

表2-17 RPC応答メッセージの内容

トランザクション結果転送処理の結果RPC応答メッセージ
コミット正常RPC正常応答
転送失敗(孤立検知)RPCエラー応答
(EERPCER_TRNCHK_EXTEND)
ロールバックRPCエラー応答
(EERPCER_TRNCHK_EXTEND)
注※
系切り替えが発生すると,転送結果が反映されている可能性があります。

<この項の構成>
(1) RPC要求受信時の処理シーケンス
(2) 実行系孤立状態の実行系/待機系のメモリDB
(3) 実行系孤立状態になった場合の対処

(1) RPC要求受信時の処理シーケンス

(a) RPC永続化指定なし(RPC関連定義rpc_recv_permanenceにY指定なし)の場合

永続化しないRPC要求メッセージを受信した場合について,次のケースのそれぞれの処理シーケンスを示します。

(b) RPC永続化指定あり(RPC関連定義rpc_recv_permanenceにY指定)の場合

永続化するRPC要求メッセージを受信した場合について,次のケースの処理シーケンスを示します。

なお,RPC永続指定ありの場合は,各ケースで処理シーケンスに変更はありません。

図2-32 RPC応答の送信タイミング変更機能使用時(trn_cl_rpc_reply_timing=Y)の処理シーケンス,およびこの機能を使用しないときの処理シーケンス

[図データ]

(2) 実行系孤立状態の実行系/待機系のメモリDB

この機能使用時,転送処理失敗により実行系孤立状態を検知した場合には,クライアントからのRPC要求はエラー応答となり,待機系に転送処理が反映されているか不明となります。このため,TP1キャッシュのメモリDBは実行系と待機系で不一致となることがあります。

RPC要求をリトライする場合,2重実行されても問題ないようなUAPを作成する必要があります。

メモリDBの不一致となるケースの例を次に記します。

(a) すべての待機系が転送失敗となった場合の流れ

図2-33 すべての待機系が転送失敗となった場合の流れ

[図データ]

[図データ]

(b) 1台ずつ転送失敗となった場合の流れ

図2-34 1台ずつ転送失敗となった場合の流れ

[図データ]

[図データ]

(3) 実行系孤立状態になった場合の対処

実行系孤立時のeetrbwtorコマンド待ち
孤立モードBを選択してください。孤立モードAを選択した場合,メモリダンプファイル出力後に受け付け済みサービスが動作するため,実行系孤立後のメモリDB更新の内容はメモリダンプファイルへ出力されません。また,クライアントへのRPC応答は失敗します。