Liveness is a system guarantee that something good eventually happens. A system is correct only when every possible behavior satisfies both its safety and liveness guarantees. section 1.4.1
Safety prevents an unwanted state; liveness prevents permanent inaction. Together, they require a system to avoid conflicting outcomes and eventually make legitimate progress. section 1.4.1
Two-participant transaction
For a transaction involving participants P1 and P2, safety forbids one participant from committing while the other aborts. Liveness requires both participants eventually to commit or both to abort. section 1.4.1
Liveness appears in several forms:
- A state machine is live when it eventually reaches each required state; a system with x alternating between 1 and 2 is live, while an unrecoverable x = 3 state has no such guarantee. section 3.2.4
- Failure mitigation restores liveness after a failure, whereas failure detection commonly protects safety by inhibiting dangerous actions. section 3.3.2
- Consensus expresses liveness as termination: every nonfailed process eventually decides on a value. section 10.2
Liveness depends on the system model and failure assumptions. Two-phase commit preserves safety but can lose liveness when its transaction coordinator fails; asynchronous systems without clocks cannot guarantee consensus under all circumstances, even with one possible node failure. section 6.3.2 section 10.1
Figure 1.9 Behavior space of a distributed transaction with two participants
Trace the behavior space of a two-participant transaction and see how safety and liveness constrain its possible states. section 1.4.1

