[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [tlaplus] [Noob] veiled passage in "Consensus on Transaction Commit"



Hi,

In the case of Transaction Commit spec (TCommit), there is no Transaction Manager and therefore there is no need to send/receive messages. Each RM will independently change its current state to the next state, and it uses "canCommit" and "notCommitted" as a means to abstract the unnecessary complexity of sending/receiving messages.

As to your specific question, the start of a transaction is marked by an RM that changes its current state from "working" to "prepared".

Please let me know if this helps.

Sincerely,
Amir Hossein Sayyad Abdi



On Sun, May 5, 2019 at 11:48 AM Alexander Vasilev <a.a.vasiljev@xxxxxxxxx> wrote:
Hello.

I'v read "Consensus on Transaction Commit" (a spinoff of "The TLA+ Video Course") through and found a veiled passage.

Section 2 "Transaction Commit" on page 2 starts as follows:

In a distributed system, a transaction is performed by a collection of processes called resource managers (RMs), each executing on a different node. The transaction ends when one of the resource managers issues a request
either to commit or to abort the transaction.

The naive reader (that's me!) would expect rather

The transaction starts when one of the resource managers issues a request...

Compare this with section 4.2 "The Paxos Commit Algorithm" on page 11:

Execution of Paxos Commit normally starts when some RM decides to prepare and sends a BeginCommit message to the leader.

or section 6.3 "Committing a Transaction" on page 18:

In Two-Phase Commit, the BeginCommit message is the Prepared message of the first RM to enter the prepared state.

so the start of the transaction is marked by sending the Prepared/BeginCommit message in case of Two-Phase/Paxos Commit. Isn't it the "request either to commit or to abort"? Alas, there is no message at the Transaction Commit abstraction level. When I started to search the "request either to C or to A", I was really puzzled. Does the request correspond to the transition from "working" into "prepared" state on Figure 1 (page 3), i.e. Prepare action in The Specification of a Transaction Commit Protocol? Or does the request correspond to the Decide action in the same Specification? It the latter case the request ends transaction indeed.

--
You received this message because you are subscribed to the Google Groups "tlaplus" group.
To unsubscribe from this group and stop receiving emails from it, send an email to tlaplus+unsubscribe@xxxxxxxxxxxxxxxx.
To post to this group, send email to tlaplus@xxxxxxxxxxxxxxxx.
Visit this group at https://groups.google.com/group/tlaplus.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "tlaplus" group.
To unsubscribe from this group and stop receiving emails from it, send an email to tlaplus+unsubscribe@xxxxxxxxxxxxxxxx.
To post to this group, send email to tlaplus@xxxxxxxxxxxxxxxx.
Visit this group at https://groups.google.com/group/tlaplus.
To view this discussion on the web visit https://groups.google.com/d/msgid/tlaplus/CAKxfy0vO_FyC0dW6544%3DCP7RZYYbpbs7Bzx2ZQeJcgO-kabpSA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.