A Quorum Is Not Enough — w + r > n and Still a Stale Read (Figure 10-6)
n = 3 replicas, w = 3, r = 2 · client B starts after client A returned, yet gets the older value
writer
write(x, 1) → sent to all three replicas (w = 3) — acks trickle in
replica n1
replica n2
replica n3
x = 1 arrives
x = 1 arrives
x = 1 arrives
each replica flips 0 → 1 at a different moment — replication is in flight
client A
read r = 2 ⇒ 1
n1: 1
n2: 0
quorum {n1, n2} — read races the write
client B
read r = 2 ⇒ 0 — STALE
n2: 0
n3: 0
quorum {n2, n3} — both replicas still lag
B starts after A returned
yet reads an older value
Why quorums are not enough
Fixes: synchronous read repair before returning · fetch the latest timestamp from a quorum before writing · wall-clock LWW is never linearizable (clock skew) · linearizable CAS needs consensus.