Uploaded image for project: 'Ignite'
  1. Ignite
  2. IGNITE-4887 Support transaction continuation in another thread
  3. IGNITE-5714

Implementation of suspend/resume for pessimistic transactions

    XMLWordPrintableJSON

Details

    • Sub-task
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 2.8
    • general

    Description

      Support transaction suspend()\resume() operations for pessimistic transactions. Resume can be called in another thread.

      But there is a problem: Imagine, we started pessimistic transaction in thread T1 and then perform put operation, which leads to sending GridDistributedLockRequest to another node. Lock request contains thread id of the transaction. Then we call suspend, resume in another thread and we also must send messages to other nodes to change thread id.

      It seems complicated task.It’s better to get rid of sending thread id to the nodes.
      We can use transaction xid on other nodes instead of thread id. Xid is sent to nodes in GridDistributedLockRequest#nearXidVer

      Proposed solution : On remote nodes instead of thread id of near transaction GridDistributedLockRequest#threadId use its xid GridDistributedLockRequest#nearXidVer.
      Remove usages of near transaction's thread id on remote nodes.

      Attachments

        Issue Links

          Activity

            People

              alex_pl Aleksey Plekhanov
              Alexey Kuznetsov Alexey Kuznetsov
              Votes:
              1 Vote for this issue
              Watchers:
              11 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 - 4h 40m
                  4h 40m