令和6年度秋期 応用情報技術者試験 午前 問27
2相コミットで分散トランザクションの原子性を保証する場合,ネットワーク障害の発生によって参加者のトランザクションが,コミットすべきか又はロールバックすべきかを判断できなくなることがある。このような状況を発生させるネットワーク障害に関する説明として,適切なものはどれか。
- ア 調停者のトランザクションが,コミット又はロールバック可否の問合せを参加者に送る直前に障害になった。
- イ 調停者のトランザクションが,コミット又はロールバックの決定を参加者に送る直前に障害になった。
- ウ 調停者のトランザクションに,コミット又はロールバック可否の応答を参加者が返す直前に障害になった。
- エ 調停者のトランザクションに,コミット又はロールバックの完了を参加者が返す直前に障害になった。
解答・解説を見る
正解:イ
AI解説
2相コミットは、第1相(準備フェーズ)で調停者が各参加者にコミット可否を問い合わせ、参加者が応答した後、第2相(コミットフェーズ)で調停者が最終的にコミットかロールバックかを決定して参加者に送る。参加者が可否応答(YES)を返した後、調停者からの最終決定(コミット/ロールバック)を受け取る前にネットワーク障害が起きると、参加者は自分では判断できず「ヒューリスティック不定(in-doubt)」の状態でブロックする。よってイが正しい。 ア: 調停者が可否問合せを送る直前の障害であり、参加者はまだ問合せ自体を受け取っていないため、判断に迷う状況は生じない(単に処理が始まっていないだけ)。 イ: 参加者が可否応答(YES)を返した後、調停者からの最終決定を受け取る前に障害が起きると、参加者はコミットすべきかロールバックすべきか自力では判断できなくなる。これが不定状態を発生させる典型的な障害点であり、正しい。 ウ: 参加者が応答を返す直前の障害であれば、調停者側は応答が届かないことをもって(タイムアウトなどで)ロールバックと扱うことができ、参加者自身は自分の状態を把握しているため致命的な不定状態にはならない。 エ: コミット/ロールバックの決定は既に参加者に届いており、完了通知の授受で障害が起きても、参加者は既に自分がコミット/ロールバックしたことを知っているため、判断不能な状態にはならない。 💡 2相コミットの不定状態は「YESと答えた後、結果を聞く前」に生じると覚える。これが分散トランザクションがブロッキング型プロトコルと呼ばれる所以である。
※Web掲載用に表記を一部変更しています。著作権はIPAに帰属します。