Talk:Three-phase commit protocol: Difference between revisions

Content deleted Content added
Ampledata (talk | contribs)
No edit summary
Atomicity reliability
Line 4:
----
i reformatted the protocol description at the bottom of the page to look similiar to [[two-phase_commit]]. hope nobody minds. [[User:Gba|gba]] 18:56, 4 March 2006 (UTC)
 
== Atomicity reliability ==
 
Since this is the first time that I post a message to a wikipedia discussion, I won't edit the article myself. I suggest this to the original author. Please correct me if I'm wrong!
 
You could make the two-phase commit protocol non-blocking in the same way as with the three-phase: by introducing timeouts. The problem with both the blocking and the non-blocking variant is the same: you can never be sure of the atomicity.
 
Consider the [http://ei.cs.vt.edu/~cs5204/fall99/distributedDBMS/sreenu/3pc.html]. If Cohort(i) sends an ACK message that gets lost because the link to Cohort breaks, the Cohort will timeout and commit the local transaction, while the Coordinator, not having received the ACK, will timeout and abort. Even if the link gets restored, you can't abort (rollback) later on the commited part on the Cohort.
 
The basic problem with most kinds of commit protocols is called the [[Two_Generals%27_Problem]]. If you add more and more layers of acknowledgements (acknowledgements to acknowledgements), the system gets more reliable but never perfect. On the down side, the execution slows more and more.
 
Regards,
[[User:Igorecan|Igorecan]] 13:14, 11 April 2006 (UTC)