Talk:Three-phase commit protocol: Difference between revisions

Content deleted Content added
Shmuma (talk | contribs)
No edit summary
Implementing WP:PIQA (Task 26)
 
(4 intermediate revisions by 4 users not shown)
Line 1:
{{WikiProject banner shell|class=Start|
{{WikiProject Computing|importance=Low}}
{{WikiProject Databases|importance=Mid}}
{{WikiProject Software|importance=Low}}
}}
I have removed large parts of the article and corrected the citation of the seminal report by Skeen, which was incorrectly a reference to a follow-up theoretical analysis by Skeen and Stonebraker.
The claims made in the previous version of the Wikipedia article were theoretically unsound, and I wasted quite some time trying to convince myself otherwise, until I finally gave up and read the original papers. It is not possible to place an upper bound on the time it takes to resolve a distributed transaction without violating the basic soundness criterion, as the Wikipedia article previously claimed. This would imply that one could solve the two generals problem in finite time. Indeed, it wasn't hard to find an example of a network partitioning where the timeout-based protocol would cause two cohorts to respectively commit and abort the same transaction. This eliminates the whole point of the protocol to begin with, as it is no better than just sending the transaction to all cohorts and hoping for the best.
 
I haven't replaced the description with a better one. The seminal technical report by Skeen is publicly available and very readable, and I don't think I can describe it any better than him. Note in particular that his description does not involve the use of timeouts at all: it is a [[Quorum_(distributed_computing)|quorum]] based algorithm, and timeouts would be an implementation detail used to detect failures.
[[User:UlrikRasmussen|Ulrik Rasmussen]] ([[User talk:UlrikRasmussen|talk]]) 08:52, 10 October 2019 (UTC)
 
----
The protocol presented on the page at present conforms to the Skeen article which actually differs slightly from the description given at
[http://courses.cs.vt.edu/~cs5204/fall00/distributedDBMS/sreenu/3pc.html]. Specifically, the state transition on the cohort from prepared to committed only happens when receiving a commit message from the coordinator in the original article. Was there a change to the protocol in the meantime?
Line 72 ⟶ 84:
 
[[User:MarkKampe|MarkKampe]] ([[User talk:MarkKampe|talk]]) 18:55, 13 March 2010 (UTC)
 
== Unreferenced quote ==
 
This passage:
 
"Three-phase commit assumes a network with bounded delay and nodes with bounded response times; In most practical systems with unbounded network delay and process pauses, it cannot guarantee atomicity."
 
is a direct quote from Martin Kleppmann's ''Designing Data-Intensive Applications'', p. 359.
 
I am not a regular contributor, not sure what's the approach to fix it.