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

Asynchronous writeIntent cleanup on write intent resolution

    XMLWordPrintableJSON

Details

    Description

      Motivation

      Both to handle commit partition failure and data node restart, it's required to cleanup local writeIntents in order to eliminate excessive write intent resolutions. It's not a matter of correctness, it's a matter of optimization.

      Definition of Done

      • Firstly, after write intent resolution, both coordinator path and commit partition path, it's required to change local state fot the corresponding transaction to either ABORTED or COMMITED in txnStateMap if writeIntentResolution outcome is ABORTED or COMMITED. That will allow switching all further writeIntentResolutions from a given node for corresponding transaction to a local path that is of course much faster.
      • An asynchronous task should be scheduled that will cleanup given write intent by either committing or aborting it.

      Implementation Notes

      • Earlier we've agreed that only RW transactions should cleanup writeIntents, however I believe it's no longer reasonable, meaning that both RW and RO should do this.
      • In order to minimize the effect of side write intents cleanup on transaction execution flow, we must perform this (and any other) write intents cleanup asynchronously in a special pool.
      • Write intent cleanup should be fully idempotent, meaning, that two separate transactions may touch the same write intent and start the cleanup. One of them will win and actually do the cleanup, another will result in no-op.

      Attachments

        Issue Links

          Activity

            People

              ksizov  Kirill Sizov
              alapin Alexander Lapin
              Alexander Lapin Alexander Lapin
              Votes:
              0 Vote for this issue
              Watchers:
              1 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 - 7.5h
                  7.5h