I am currently reading through this http://research.microsoft.com/en-us/people/philbe/chapter7.pdf chapter about distributed recovery. The chapter focuses on 2 phase atomic commit (2PC) and 3 phase atomic commit (3PC). Two related questions have me stumped.
7.11: In the 2PC protocol the coordinatorfirst decides Commit (by writing a commit record to its site’s DT log) and then sends COMMIT messages to the participants. Suppose the order of these two steps is reversed. Show that this variation of 2PC is non-blocking if
a. there are no communication failures and at most one process can fail,
b. there are no communication failures and processes have the ability to broadcast messages atomically (i.e., so that either all recipients get it or no recipient does).
How does this variation of 2PC affect the recovery procedures? Give recovery procedures that work for the modified 2PC protocol.
7.22: In 3PC, does the relative order of sending COMMIT messages and writ- ing a commit record in the DT log matter? What about the relative order of sending ABORT messages and writing an abort record?
The first does not seem particularly hard, but I am unsure of how to actually prove that a program is non-blocking. The second question is a bit more complex. My intuition is that 3PC has enough built in safeguards with the PRE-COMMIT phase that changing the order wouldn't matter, but again I am uncertain of what a proof of this would look like.