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

Implement durable transaction coordinator finish

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 3.0
    • None

    Description

      Motivation

      Transaction coordinator should properly handle:

      • All kind of exceptions that might be thrown during sending finish request and finish response awaiting.
      • Commit partition primary replica changes.
      • Including dedicated scenario of commit partition recovery after commit partition majority loss.

      Definition of Done

      Transaction finish request is sent in a durable manner.

      Implementation Notes

      • Commit timestamp, tx outcome (commit/abort), enlisted paritions set, etc are calculated once only and do not change over retries.
      • Recipient on the other hand may change, and should be evaluated as PD.awaitPrimaryReplica(commitPartition). Thus, we will handle both primary replica changes and commit partition recovery after majority loss.
      • On the commit partition side, finish request should await for all locks to be released (see lock released flag in txnState).
      • It's possible for finish request to see a terminated transaction with another outcome, meaning that recovery logic (that's not yet implemented) will rollback the transaction while finish request contains commit as the desired outcome. In that case, we expect the user to receive a tx-was-rolled-back exception. Any consecutive user calls, both commit and rollback should not throw exceptions.

      Attachments

        Issue Links

          Activity

            People

              ksizov  Kirill Sizov
              alapin Alexander Lapin
              Denis Chudov Denis Chudov
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 8h 10m
                  8h 10m