5 questions to test your understanding
In 2PC, all participants have voted 'yes' in the prepare phase and the coordinator then crashes before sending any commit or abort. A new coordinator takes over. What is the fundamental problem?
Why does 3PC's non-blocking guarantee break down when the network can partition, even though it solves the coordinator-crash scenario?
In 3PC, if a participant has received a preCommit message, it knows that all other participants voted 'yes' in the canCommit phase, which enables a new coordinator to safely issue doCommit.
Three-phase commit was designed to improve transaction throughput over 2PC by reducing the total number of messages exchanged during the commit process.
What specific knowledge does the preCommit phase give participants that allows 3PC to avoid the indefinite blocking problem of 2PC, and what failure assumption must hold for this to work?