[ https://issues.apache.org/jira/browse/IGNITE-9944?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16656968#comment-16656968 ]
ASF GitHub Bot commented on IGNITE-9944: ---------------------------------------- GitHub user pavlukhin opened a pull request: https://github.com/apache/ignite/pull/5040 IGNITE-9944: GridDhtTxAbstractEnlistFuture near nodes update race You can merge this pull request into a Git repository by running: $ git pull https://github.com/gridgain/apache-ignite ignite-9944 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/ignite/pull/5040.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #5040 ---- commit 72be72b18b8ab9c791ef06ad811e16cfd15cd55e Author: ipavlukhin <vololo100@...> Date: 2018-10-19T15:42:14Z fix problem when first enlist request is not sent to near node with MOVING backup partition ---- > MVCC TX: GridDhtTxAbstractEnlistFuture near nodes update race. > -------------------------------------------------------------- > > Key: IGNITE-9944 > URL: https://issues.apache.org/jira/browse/IGNITE-9944 > Project: Ignite > Issue Type: Bug > Components: mvcc > Reporter: Roman Kondakov > Assignee: Ivan Pavlukhin > Priority: Major > Fix For: 2.7 > > > When {{GridDhtTxAbstractEnlistFuture#skipNearNodeUpdates}} is set to true it > can cause failure on backup node during rebalancing. Possible scenario: > # 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. > # 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. > # But instead of sending {{GridDhtTxQueryFirstEnlistRequest}}, the > {{GridDhtTxQueryEnlistRequest}} will be sent because near node has already > been added to tx lock nodes list. > # 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. -- This message was sent by Atlassian JIRA (v7.6.3#76005)