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

MVCC TX: GridDhtTxAbstractEnlistFuture near nodes update race.

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 2.7
    • mvcc
    • None

    Description

      When GridDhtTxAbstractEnlistFuture#skipNearNodeUpdates is set to true it can cause failure on backup node during rebalancing. Possible scenario:

      1. First entry is enlisted before rabalance was started and therefore it's backup node is added to GridDhtTxLocalAdapter#addLockTransactionNode in GridDhtTxAbstractEnlistFuture#addToBatch method. Note: in this case remote tx is not started on remote note.
      2. Next entry could be processed when rebalance is already started and therefore this optimization will be skipped. In this case updated entry will be sent to backup node as usual in DhtEnlistRequest.
      3. But instead of sending GridDhtTxQueryFirstEnlistRequest, the GridDhtTxQueryEnlistRequest will be sent because near node has already been added to tx lock nodes list.
      4. When this request arrives in GridDhtTransactionalCacheAdapter#processDhtTxQueryEnlistRequest, the "Can not find a transaction" exception will be thrown.

      Possible solution: we need to send GridDhtTxQueryFirstEnlistRequest in these cases.

      Attachments

        Issue Links

          Activity

            People

              Pavlukhin Ivan Pavlukhin
              rkondakov Roman Kondakov
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: