平成21年度秋期 応用情報技術者試験 午前 問31
分散トランザクション処理で利用される2相コミットプロトコルでは,コミット処理を開始する調停者(coordinator)と,調停者からの指示を受信してから必要なアクションを開始する参加者(participant)がいる。この2相コミットプロトコルに関する記述のうち,適切なものはどれか。
- ア 参加者は,フェーズ1で調停者にコミット了承の応答を返してしまえば,フェーズ2のコミット要求を受信していなくても,ローカルにコミット処理が進められる。
- イ 調停者に障害が発生するタイミングによっては,その回復処理が終わらない限り,参加者全員がコミットもロールバックも行えない事態が起こる。
- ウ 一つの分散トランザクションに複数の調停者及び参加者が存在し得る。例えば,5個のシステム(プログラム)が関与している場合,調停者の数が2,参加者の数が3となり得る。
- エ フェーズ1で返答のない参加者が存在しても,調停者は強制的にそのトランザクションをコミットすることができる。
解答・解説を見る
正解:イ
AI解説
2相コミットでは、参加者はフェーズ1で「コミット可」と応答した時点でローカルなコミット/ロールバックを確定できず、フェーズ2の指示を待つ必要がある。そのため調停者に障害が発生すると、参加者は指示を受け取れず、調停者の回復が完了するまでコミットもロールバックもできない「保留(ブロッキング)状態」に陥り得る。 ア: 誤り。参加者はフェーズ1で了承応答を返しても、フェーズ2のコミット指示を受け取るまで確定的にコミットしてはならない。他の参加者がロールバックを選ぶ可能性があるため。 イ: 正しい。調停者の障害中は参加者への指示が届かず、参加者はコミットもロールバックも行えない不確定状態のまま待たされることがある。これが2相コミットの既知の弱点(ブロッキング問題)である。 ウ: 誤り。1つの分散トランザクションでは通常、調停者は1つ(階層的な入れ子構成の場合を除き単純に人数が独立に増減するものではない)であり、5システム中「調停者2・参加者3」というような任意の内訳にはならない。 エ: 誤り。フェーズ1で未応答の参加者がいる場合、調停者は安全のためトランザクションをロールバック(中止)すべきであり、強制的にコミットすることはできない。 💡 2相コミットの弱点は「調停者障害時のブロッキング」。試験では『フェーズ1了承後は勝手に確定できない』『調停者障害=参加者は身動きが取れない』の2点セットで覚える。
※Web掲載用に表記を一部変更しています。著作権はIPAに帰属します。