7.9 転送処理で障害が発生したときのXTCの処理
転送処理で障害が発生したときのXTCの処理を次の表に示します。
表7-3 転送処理で障害が発生したときのXTCの処理
項番 | 障害要因 | XTCの処理 |
---|
1 | HAサーバからの一方送信メッセージを受信したあとに,待機系からの送達確認メッセージの受信待ちタイムアウトが発生した | - 送信元に送達確認エラーメッセージ(CL同期エラーメッセージ)を送信します。
- 受信メッセージを破棄します。
- 待機系に受信メッセージを破棄するメッセージを送信します。
|
2 | 待機系から送達確認メッセージを受信したあとに,HAサーバからの一方送信メッセージの受信待ちタイムアウトが発生した | - HAサーバに送達確認エラーメッセージ(CL同期エラーメッセージ)を送信します。
- 待機系に受信メッセージを破棄するメッセージを送信します。
|
3 | HAサーバへの送達確認メッセージの送信エラー(リトライ失敗)が発生した | 処理キューの登録後,送信エラーのメッセージを出力します。HAサーバに送達確認メッセージが届いている場合があるため,受信メッセージは破棄しません。 |
4 | 待機系へのCL同期メッセージの送信エラー(リトライ失敗)が発生した | |
5 | 待機系へのCL同期済み通知メッセージの送信エラー(リトライ失敗)が発生した |
- 参考
- ここでは,入力メッセージの送信元としてHAサーバを仮定しています。CLサーバから別のクラスタグループのCLサーバへマルチキャストでメッセージを送信することもできます。
転送処理で障害が発生したときのXTCの処理をケース別に説明します。
- <この節の構成>
- (1) 一方送信メッセージが実行系に届かない場合
- (2) 一方送信メッセージが待機系に届かない場合
- (3) 一方送信メッセージに対する送達確認メッセージがHAサーバに届かない場合
- (4) CL同期メッセージまたはCL同期済み通知メッセージの送信に失敗した場合
(1) 一方送信メッセージが実行系に届かない場合
ネットワーク障害などによって,HAサーバからの一方送信メッセージが実行系に届かないときの処理を次に示します。
- ■実行系の処理
- 待機系からの送達確認メッセージを受信したあと,CL同期待ち監視時間のタイムアウトを検知し,HAサーバに送達確認エラーメッセージ(CL同期エラーメッセージ)を送信します。
- 受信メッセージを破棄するメッセージをマルチキャストで待機系に送信します。
- ■待機系の処理
- HAサーバからの一方送信メッセージを受信したあと,実行系に送達確認メッセージを送信します。
- 実行系からの,受信メッセージを破棄するメッセージを受信したあと,HAサーバからの受信メッセージを破棄します。
- ■HAサーバの処理
- 実行系が送信した送達確認エラーメッセージを受信します。送達確認エラーメッセージを受信したときのHAサーバの処理については,「2.2.8 障害処理」を参照してください。
(2) 一方送信メッセージが待機系に届かない場合
ネットワーク障害などによって,HAサーバからの一方送信メッセージがすべての待機系に届かないときの処理を次に示します。
- ■実行系の処理
- HAサーバからの一方送信メッセージが待機系に届かなかったことを,クラスタ連携関連定義のmch_clsend_ack_timerオペランドの時間監視によるタイムアウトで検知し,HAサーバに送達確認エラーメッセージ(CL同期エラーメッセージ)を送信します。
- HAサーバからの受信メッセージを破棄します。
- 受信メッセージを破棄するメッセージをマルチキャストで待機系に送信します。
- ■待機系の処理
- 実行系からの,受信メッセージを破棄するメッセージを受信したあと,HAサーバからの受信メッセージを破棄します。
- なお,HAサーバからの受信メッセージを破棄するのは,HAサーバからの一方送信メッセージを受信した待機系だけです。
- ■HAサーバの処理
- 実行系が送信した送達確認エラーメッセージを受信します。送達確認エラーメッセージを受信したときのHAサーバの処理については,「2.2 高速メッセージ送信制御」を参照してください。
(3) 一方送信メッセージに対する送達確認メッセージがHAサーバに届かない場合
一方送信メッセージに対する送達確認メッセージが,ネットワーク障害などによってHAサーバに届かないときの処理を次に示します。
- ■実行系の処理
- 障害によって送達確認メッセージがHAサーバに送信できない場合,高速メッセージ送信関連定義のmch_send_retry_countオペランドの指定に従って送信リトライ処理を行います。
- 送信リトライ処理に失敗した場合,送信エラーのメッセージを出力します。
(4) CL同期メッセージまたはCL同期済み通知メッセージの送信に失敗した場合
CL同期メッセージまたはCL同期済み通知メッセージの送信がエラーとなった場合,クラスタ連携関連定義のmch_clsend_retry_countオペランドの指定に従ってメッセージを再送します。すべての待機系への再送が失敗した場合は,待機系を切り離して実行系孤立状態となります。CL同期メッセージまたはCL同期済み通知メッセージの送信に失敗した場合の処理の流れを次の図に示します。
図7-14 CL同期メッセージまたはCL同期済み通知メッセージの送信に失敗した場合の処理の流れ
![[図データ]](figure/zu080100.gif)
- 説明
- 実行系からのCL同期メッセージの送信に失敗した場合,クラスタ連携関連定義のmch_clsend_retry_countオペランドの指定に従ってメッセージの送信リトライ処理を行います。
- 送信リトライ処理に失敗した場合,送信エラーのメッセージを出力し,該当する待機系を切り離して処理を続行します。ただし,すべての待機系を切り離した場合は,実行系孤立状態となります。
- 再送されたCL同期メッセージが待機系で受信済みの場合は,受信したCL同期メッセージを破棄します。