distributedsystem distributedsystem/microservice
ACID Principles > Atomicity
Argus · Distributed Systems Engineering Lecture notes (MIT 6.824)
A blocking protocol to ensure atomic commit across distributed systems.
This protocol requires a coordinator node, which basically coordinates and oversees the transaction across different nodes. The coordinator tries to establish the consensus among a set of processes in two phases, hence the name.


1. Prepare Phase
- Coordinator sends
PREPARErequest to all participants. - Each participant:
- Checks if it can commit.
- Writes to a log, then replies with
YESorNO.
2. Commit Phase
- If all participants voted
YES:- Coordinator sends
COMMIT.
- Coordinator sends
- If any voted
NO:- Coordinator sends
ABORT.
- Coordinator sends
It Can lead to both the coordinator and the group members blocking, which may lead to the dreaded deadlock.
**Blocking issue**: if the coordinator crashes after participants vote `YES`, they get **stuck waiting** indefinitely.
