7.9 転送処理で障害が発生したときのXTCの処理

転送処理で障害が発生したときのXTCの処理を次の表に示します。

表7-3 転送処理で障害が発生したときのXTCの処理

項番障害要因XTCの処理
1HAサーバからの一方送信メッセージを受信したあとに,待機系からの送達確認メッセージの受信待ちタイムアウトが発生した
  • 送信元に送達確認エラーメッセージ(CL同期エラーメッセージ)を送信します。
  • 受信メッセージを破棄します。
  • 待機系に受信メッセージを破棄するメッセージを送信します。
2待機系から送達確認メッセージを受信したあとに,HAサーバからの一方送信メッセージの受信待ちタイムアウトが発生した
  • HAサーバに送達確認エラーメッセージ(CL同期エラーメッセージ)を送信します。
  • 待機系に受信メッセージを破棄するメッセージを送信します。
3HAサーバへの送達確認メッセージの送信エラー(リトライ失敗)が発生した処理キューの登録後,送信エラーのメッセージを出力します。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同期済み通知メッセージの送信に失敗した場合の処理の流れ

[図データ]

説明
  1. 実行系からのCL同期メッセージの送信に失敗した場合,クラスタ連携関連定義のmch_clsend_retry_countオペランドの指定に従ってメッセージの送信リトライ処理を行います。
  2. 送信リトライ処理に失敗した場合,送信エラーのメッセージを出力し,該当する待機系を切り離して処理を続行します。ただし,すべての待機系を切り離した場合は,実行系孤立状態となります。
  3. 再送されたCL同期メッセージが待機系で受信済みの場合は,受信したCL同期メッセージを破棄します。