The Dual-Write Race — Two Systems, Two Orders (Figure 12-4)

The Dual-Write Race — Two Systems, Two Orders (Figure 12-4) A sequence diagram generated by Archify. set X = A set X = B write X = A client 1's write is applied first write X = B database final value: B index X = B client 2's write arrives first index X = A index final value: A DB = B, index = A no error occurred — silent divergence; no concurrency detection (version vectors would notice) if one write fails the other still commits — both-or-nothing is atomic commit (2PC), not concurrency Two concurrent requests Database applies A, then B Search index receives B, then A Silent divergence Client 1 · wants X = A · Sequence participant Client 1 wants X = A Client 2 · wants X = B · Sequence participant Client 2 wants X = B Application · writes both systems · Sequence participant Application writes both systems Database · its own leader · Sequence participant Database its own leader Search Index · its own leader · Sequence participant Search Index its own leader Legend main request async trace message