Details
-
Improvement
-
Resolution: Won't Do
-
Critical
-
None
-
None
-
1
Description
When performing a mutation operation with ReplicateTo.ONE, an operation may be acknowledged at the primary, but may timeout before it is replicated. It may also timeout at the primary. Since the mitigation for these could be minorly different and the durability implementation has more information, as an improvement we should extend the TimeoutException with a custom exception that indicates if the failure is on the initial mutation operation or on replica receipt.
The specific implementation of how the check for durability should be hidden (e.g., polling versus a future event driven approach). API Docs should be clear that the additional info may help the application understand what timed out, but this does not give any stronger guarantees on atomicity or visibility. For instance, an operation's mutation may still be visible for a period of time on the active and still time out, depending on the nature of the failure.
We should consider backporting this to the 2.5 series (as uncommitted) after implementation.