2 相コミットで判断できなくなる障害
出典: 令和6年度 秋期 応用情報技術者試験 午前 問27 (IPA)
2 相コミットで分散トランザクションの原子性を保証する場合,ネットワーク障害の発生によって参加者のトランザクションが,コミットすべきか又はロールバックすべきかを判断できなくなることがある。このような状況を発生させるネットワーク障害に関する説明として,適切なものはどれか。
- ア 調停者のトランザクションが,コミット又はロールバック可否の問合せを参加者に送る直前に障害になった。
- イ 調停者のトランザクションが,コミット又はロールバックの決定を参加者に送る直前に障害になった。
- ウ 調停者のトランザクションに,コミット又はロールバック可否の応答を参加者が返す直前に障害になった。
- エ 調停者のトランザクションに,コミット又はロールバックの完了を参加者が返す直前に障害になった。
正解と解説を見る
正解: イ
- ア: 問合せの前に障害が起きた場合、参加者はまだ準備の段階に入っていないので、自分でロールバックできます。
- イ: 参加者は「コミットできる」と答えた後、決定を待っている状態です。決定が届かないと、コミットもロールバックも決められなくなります。
- ウ: 参加者が応答を返せない場合、調停者は応答がないことからロールバックを決定できます。参加者もまだ準備完了を伝えていません。
- エ: 完了を返す直前なら、参加者はすでに決定を受け取って処理しています。判断できない状況にはなりません。
ポイント
2 相コミットの流れ:
- 第 1 相: 調停者が参加者に「コミットできるか」を問い合わせ、参加者は準備ができたら「できる」と答えて待つ
- 第 2 相: 調停者が全員の答えを見てコミットかロールバックかを 決定 し、参加者に送る
参加者は「できる」と答えた後、調停者の決定が届くまで自分では決められません。決定を送る直前に障害が起きると、参加者は どちらにすべきか判断できない状態 (ブロック) になります。