Described herein is a system for executing distributed transactions. A
coordinator and one or more participants cooperate to execute a
distributed transaction, the distributed transaction including for each
participant a transaction executed by the participant. To manage the
transaction, the coordinator and the participant communicate over a
network using, for example, a stateless protocol. Before each participant
commits the transaction, the participants determine that the coordinator
has committed the transaction. The coordinator commits the transaction
after receiving acknowledgment from all the participants that they will
commit the transaction. To determine whether the coordinator has
committed the transaction, a participant transmits a message to the
coordinator to acknowledge that it will commit the distributed
transaction. The participant commits its respective transaction if it
receives an acknowledgement from the coordinator. For the particular
transaction being executed by a participant, the participant prevents
other transactions from modifying a data item affected by the particular
transaction. The participant will prevent such modifications until
termination criteria for the particular transaction is satisfied, in
which case the participant terminates the transaction.