Details
Description
Recently (IGNITE-21540) retries was introduced for transactions, both explicit and implicit.
But the current implementation has flaws:
- In embedded mode retries cause recursion (because the future is completed on the same thread), which can lead to stack overflow.
- Retries are executed without delay in a loop, which might not give enough time for conflicting lock release, making retries almost useless.
- Read operations are not retried but need to.
- Data streamer operations are not retried but need to.
To fix 1 and 2 I suggest to submit a response for retryable operation (if retry is required) to another thread to avoid recursion and introduce retry delay for retriable operations, preferrably with exponential back-off.
Fix for 3 and 4 is obvious.
Attachments
Issue Links
- links to