Details
-
Bug
-
Status: Triage Needed
-
Normal
-
Resolution: Unresolved
-
None
-
None
-
All
-
None
Description
Paxos.read currently copies the code to throw timeout exception if the read had side effects. This doesn’t make much sense because the empty proposal doesn’t have a side effect so it should be safe to retry the empty proposal instead of throwing timeout immediately.
The impact of this is a little more severe because it’s also not waiting during propose to see if there wouldn’t have been side effects for its empty proposal so it will always think there were side effects and timeout immediately if there are any refusals.
Of course this only ever happens when it thinks the read might not be linearizable because it witnessed some in progress operation during the prrepare/promise phase.
This should be pretty easy to fix either by removing the side effect immediate timeout code entirely, or at least improved by actually waiting for side effects during propose.