Replica Comes Back Stale

Key cart:8812 on N=3N = 3 replicas A, B and C, with R=2R = 2 and W=2W = 2. Versions are stamped with a vector clock, and each write here was issued by the same client after reading the previous one, so v3 descends from v2, which descends from v1.

step event A B C
1 write v1, acked by A, B, C v1 v1 v1
2 B unreachable; write v2 acked by A, C v2 v1 v2
3 B returns; write v3 acked by A, B v3 v3 v2
4 read at R=2R = 2 reaches B and C v3 v3 v2

What does the read return, and what happens to C?

A

It returns v2. B skipped the v2 write while it was down, so its copy is the one that cannot be trusted and C's is authoritative.

B

It returns v3, and on that same read the coordinator pushes v3 to C as read repair.

C

It returns v3, but C is left alone. Read repair is a scheduled background job, and closing the gap here is anti-entropy's work.

D

It returns v2 and v3 as siblings for the client to reconcile, because two replicas answered with different versions.