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

Reply via email to