Skip to content
About
Main content

What coordination forbids

What this article forbids

  1. Telling a slow node from a dead one. This is permanent, and everything else follows from it. A silent node and a slow node look the same from outside.
  2. Deterministic consensus in an asynchronous model with one crash fault. This is the (named after Fischer, Lynch and Paterson). "Asynchronous" means message delays have no upper limit. FLP says no algorithm can promise that it always reaches agreement in that model if even one node may crash. It is escaped only by assuming (the network is slow at times but sooner or later behaves) or by randomization.
  3. Mutual exclusion over an unmodified resource. A (a lock that expires on its own) leaks at the boundary. Only a token that the resource itself checks can close the gap.
  4. A safe quorum over a membership set that the participants disagree about. This is (two groups each believing they are in charge) by arithmetic. No network is needed.
  5. Majority availability inside two symmetric failure domains. With only two sites, you need a third.
  6. Global simultaneity. No "same instant" exists across machines. It is replaced by a (a set of local snapshots that no participant can tell apart from a single instant). This is observationally equivalent to simultaneity, and nothing more.
  7. Order, knowledge of termination, or non-idempotent payloads over gossip. spreads facts without ordering, never says "everyone has it now", and may deliver a message twice.
  8. A coordination-free implementation of a non-monotonic invariant. This is the theorem. It is the only real theorem about when you are allowed to skip all this machinery.

Escapes and what each costs

An escape is a mechanism that works around a limit. No escape is free. Each one buys something, costs something, and the cost lands on someone. The last column is the one to read twice.

EscapeBuysCostsPaid by
intersection with no timing assumption⌈(N+1)/2⌉ reachable members, alwaysavailability during a partition
+ termfree ordering, one-round-trip commitsa single write bottleneck and a failover windowevery writer, and during elections
Randomized symmetry breaking with no coordinatora slower expected election, slightly
Leaseconverts a round trip into a local decisionsafety now depends on bounded clock driftcorrectness, if the bound breaks
removes the timing assumption from safetythe resource must check itwhoever owns the resource
Gossipdissemination with no required nodeno order, no completion, tombstones foreverfreshness, and a janitor
Indirect probing (SWIM)tells a link failure from a node failure at O(1) costk extra messages per suspiciona little bandwidth
Witness memberintersection cardinality without storageone more to operatethe operator
Unaligned snapshotremoves the straggler from the critical pathsnapshot size and recovery timestorage and restart
Bounded-error clocktime becomes a safety primitiveyou wait out the boundlatency, explicitly
Restate the invariant (CALM, , UUIDs)removes the coordination entirelyonly available when the semantics permitnothing, which is why it is underused

The last row repeats a pattern seen in other parts of the platform: the escapes with no real cost (declare your intent, reformulate the operation) are the ones practitioners reach for last. Here the pattern is sharper, because CALM tells you exactly when the escape is available, instead of leaving it to taste.