Uploaded image for project: 'Ignite'
  1. Ignite
  2. IGNITE-22130

Fix retry logic for transactions

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: In Progress
    • Major
    • Resolution: Unresolved
    • None
    • 3.0
    • None
    • Docs Required, Release Notes Required

    Description

      Recently (IGNITE-21540) retries was introduced for transactions, both explicit and implicit.

      But the current implementation has flaws:

      1. In embedded mode retries cause recursion (because the future is completed on the same thread), which can lead to stack overflow.
      2. Retries are executed without delay in a loop, which might not give enough time for conflicting lock release, making retries almost useless.
      3. Read operations are not retried but need to.
      4. 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

          Activity

            People

              ascherbakov Alexey Scherbakov
              ascherbakov Alexey Scherbakov
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 1h 50m
                  1h 50m