Commit is accepted only after every participant votes yes.

highlighted = computed this step

Commit needs every yes

A commit decision is accepted only after every participant has voted yes. The book source also checks that a missing yes vote raises instead of rendering.

commit requires all yes\text{commit requires all yes}

Commit transition

This accepted commit trace has 2 yes votes, 2 committed participants, and 5 timeline snapshots.

yes votes=2,committed=2,snapshots=5\text{yes votes}=2,\quad \text{committed}=2,\quad \text{snapshots}=5

two-phase commit is rendered here as a tiny exact FSM trace; timeouts, recovery, network partitions, availability, and database-product behavior are out of scope.

All yes commitseventcoordinatordecisionvotesparticipantsinitialinitpendingnoneP1:init, P2:initprepare CwaitingpendingnoneP1:prepared, P2:preparedvote P1 yeswaitingpendingP1:yesP1:voted_yes, P2:preparedvote P2 yeswaitingpendingP1:yes, P2:yesP1:voted_yes, P2:voted_yesdecide commitcommittedcommitP1:yes, P2:yesP1:committed, P2:committed participant statesparticipantvotestateP1yescommittedP2yescommitted compiled summaryfactvaluedecisioncommitoutcomecommitcoordinatorcommittedcommitAllowedyesabortReasonnone

Summary

The commit decision is not authored as a conclusion; it is accepted by replaying the vote history. Note: commit durability and recovery are outside this FSM.

commit is guarded by votes\text{commit is guarded by votes}