4.9.5 同期点処理
同期点処理では,OpenTP1からのトランザクション処理(コミット・プリペア・ロールバック)を実行します。同期点処理は,トランザクション連携機能の同期点電文送受信スレッドが送受信します。トランザクション連携機能を使用した同期点処理の流れを次の図に示します。
-
OpenTP1のSUPが,グローバルトランザクションをコミット(dc_trn_unchained_commit関数)します。
OpenTP1は,TP1インバウンドアダプタからのRPC応答を受信したコネクションを使用して,TP1インバウンドアダプタへプリペア(更新準備処理)を送信します。RPC応答を受信したコネクションが切断している場合,OpenTP1では,新たにTP1インバウンドアダプタとコネクションを接続してからプリペアを送信します。コネクションの接続は,「4.6.2(2) 同期点待ち受けポートがコネクション接続要求を受信した際の動作」を参照してください。
-
コネクション管理機能の同期点監視スレッドでは,OpenTP1からの電文の受信を検知すると,該当するコネクションにトランザクション連携機能の同期点電文送受信スレッドを割り当てます。
コネクションを割り当てられた同期点電文送受信スレッドは,OpenTP1からのプリペアを受信します。
-
同期点電文送受信スレッドは,トランザクションマネージャに対してプリペアを実行します。トランザクションマネージャのプリペアが完了すると,同期点電文送受信スレッドは,プリペアを受信したコネクションを使用して,OpenTP1へプリペアの応答を送信します。
-
OpenTP1は,TP1インバウンドアダプタからプリペアの応答を受信すると,同じコネクションを使用してTP1インバウンドアダプタへコミットまたはロールバック(更新処理)を送信します。プリペアの応答を受信したコネクションが切断している場合,OpenTP1では,新たにTP1インバウンドアダプタとコネクションを接続してからコミットまたはロールバックを送信します。コネクションの接続は,「4.6.2(2) 同期点待ち受けポートがコネクション接続要求を受信した際の動作」を参照してください。
-
コネクション管理機能の同期点監視スレッドでOpenTP1からの電文の受信を検知すると,同期点監視スレッドは該当するコネクションにトランザクション連携機能の同期点電文送受信スレッドを割り当てます。
コネクションを割り当てられた同期点電文送受信スレッドは,OpenTP1からのコミットまたはロールバックを受信します。
-
同期点電文送受信スレッドは,トランザクションマネージャに対してコミットまたはロールバックを実行します。
-
トランザクションマネージャのコミット・ロールバックが完了すると,同期点電文送受信スレッドは,コミット・ロールバックを受信したコネクションを使用してOpenTP1へコミット・ロールバックの応答を送信します。
- ポイント
-
2相コミットによるトランザクションの決着
OpenTP1では,グローバルトランザクションに参加しているRPC通信先のOpenTP1,またはアプリケーションサーバのトランザクションの決着には2相コミットを使用しています。
2相コミットとは,アプリケーションサーバのトランザクションの決着処理をプリペアと,コミット・ロールバックの2段階に分ける方式です。これにより,複数のトランザクションを矛盾なく更新できます。
2相コミットの詳細については,マニュアル「OpenTP1 解説」の2相コミットに関する説明を参照してください。