Replace unverifiable facts with verifiable ones
Why does coordination define checkable substitutes instead of observing liveness or ownership?
Distribution of data moved bytes. This article moves nothing. Everything here is a few dozen bytes of metadata, and yet it is where the difficulty of this mechanism lives. The facts these bytes assert are facts no machine can check.
The constraint: the properties coordination needs are unobservable:
- Is that node alive?
- Does it still hold the lock?
- Are we all at the same point?
- Is this the current configuration?
Not expensive, not approximate, but unobservable in principle. The only evidence available is the arrival or non-arrival of a message, and non-arrival is consistent with both death and delay (FLP is the formal statement).
So the mechanisms in this article do something more radical than approximating. They stop trying to observe the property. They define a new property that is observable, and legislate that the new one is what counts.
- A node is not "alive". It is the holder of a lease that has not expired by the issuer's reckoning.
- A node is not "the leader". It is the recipient of votes from a majority in term 7.
- The system is not "in a consistent global state". It holds a cut that no participant can distinguish from one.
Every safety argument in this article is therefore an argument about a set of messages someone holds, not about the world. That is exactly why quorum intersection works under arbitrary delay while everything built on timeouts does not.
This is why safety and liveness need different tools: in a correct protocol no timeout value can produce two leaders, only zero. When you find a timing assumption sitting inside a safety argument, you have found a lease, and a lease always needs a fence behind it.
Coordination is the replacement of unverifiable facts about the world with verifiable facts about a set of messages, after which safety is a bookkeeping property and only liveness still depends on the network.