[
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)