Reads That Go Backward

One leader, two asynchronous followers. Follower F1 is healthy; F2 is catching up after a stop-the-world pause.

At t=0t = 0 another user commits comment #501 on the leader. F1 applies it at t=120t = 120 ms. F2 applies it at t=900t = 900 ms.

Your browser issues three reads, and the load balancer sends them round-robin:

read time served by
R1 200 ms F1
R2 400 ms F2
R3 1000 ms F2

What does the user see, and which guarantee broke?

A

#501 all three times: the balancer drops any replica whose lag exceeds a few hundred milliseconds, so R2 is rerouted to F1

B

#501, then no #501, then #501 again: monotonic reads is violated, because a later read observed a state older than an earlier one

C

#501, then no #501, then #501 again: read-your-writes is violated, because the comment vanished after it was already returned

D

No #501, no #501, then #501: a follower is kept out of the read pool until it has caught up to the leader's log position