2相コミットメントプロトコルにおける障害とブロッキング

2相コミット(Two-Phase Commit)プロトコルでは,第1相(準備相)で調停者(コーディネータ)が全参加者へコミット準備の可否を問い合わせ,全参加者が「コミット可」と応答した場合に第2相(コミット相)で調停者が「コミット決定」を全参加者へ通知します。 もし調停者がコミットまたはロールバックの決定通知を参加者に送る直前(または送信中)にネットワーク障害や調停者障害が発生すると,第1相で「コミット準備完了」を返答した参加者は調停者からの最終決定メッセージを受信できなくなります。参加者は他の参加者の状況を知ることができないため,単独でコミットすることもロールバックすることもできず,判断不能(ブロック状態)に陥ってしまいます。したがって正解はイとなります。 各選択肢の解説は以下のとおりです。 問合せ送信前の障害であれば,参加者は何も処理を始めていないかタイムアウトにより自律的にロールバック(中止)できます。 参加者の応答送信直前の障害であれば,調停者は一定時間応答がないためタイムアウトとしてトランザクションの中止(ロールバック)を決定でき,参加者側もタイムアウトでロールバック可能です。 コミットまたはロールバックの実行自体は既に参加者側で完了しているため,完了通知が届かなくても参加者自身が判断不能になることはありません。

2相コミットで分散トランザクションの原子性を保証する場合,ネットワーク障害の発生によって参加者のトランザクションが,コミットすべきか又はロールバックすべきかを判断できなくなることがある。このような状況を発生させるネットワーク障害に関する説明として,適切なものはどれか。

出典令和6年度 秋期 応用情報技術者試験 午前 問27
ア
調停者のトランザクションが,コミット又はロールバック可否の問合せを参加者に送る直前に障害になった。
イ
調停者のトランザクションが,コミット又はロールバックの決定を参加者に送る直前に障害になった。
ウ
調停者のトランザクションに,コミット又はロールバック可否の応答を参加者が返す直前に障害になった。
エ
調停者のトランザクションに,コミット又はロールバックの完了を参加者が返す直前に障害になった。