[ 
https://issues.apache.org/jira/browse/IGNITE-9133?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16644847#comment-16644847
 ] 

ASF GitHub Bot commented on IGNITE-9133:
----------------------------------------

GitHub user devozerov opened a pull request:

    https://github.com/apache/ignite/pull/4943

    IGNITE-9133

    

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/gridgain/apache-ignite ignite-9133

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/ignite/pull/4943.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 #4943
    
----
commit e7e76fd91268a44539f0ae7adf9ea58caaac1b0d
Author: devozerov <vozerov@...>
Date:   2018-10-10T10:30:29Z

    Test.

commit 233b2501c931b71f3551ace963b926651af47a6f
Author: devozerov <vozerov@...>
Date:   2018-10-10T10:36:37Z

    WIP.

commit 1539e79319ba3fd091fa7e0e4b7601af671976ec
Author: devozerov <vozerov@...>
Date:   2018-10-10T10:37:00Z

    WIP.

commit ffb2e4fb617d5af4c1f88542e79dad1f884f95f4
Author: devozerov <vozerov@...>
Date:   2018-10-10T11:26:34Z

    Done.

----


> MVCC: Proper empty DHT transactions handling.
> ---------------------------------------------
>
>                 Key: IGNITE-9133
>                 URL: https://issues.apache.org/jira/browse/IGNITE-9133
>             Project: Ignite
>          Issue Type: Bug
>          Components: mvcc, sql
>            Reporter: Roman Kondakov
>            Assignee: Vladimir Ozerov
>            Priority: Major
>             Fix For: 2.7
>
>
> In the cases when DHT transaction is empty (i.e. no keys were enlisted) after 
> the enlist step, we need to rollback local DHT transaction to exclude it from 
> the further transaction flow in order to performance increasing.
> An ordinary Dht tx rollback {{GridDhtTxLocal#rollbackDhtLocalAsync}} is not 
> suitable in this situation because it adds tx to 
> {{IgniteTxManager#completedVersHashMap}} which is unacceptable because this 
> action prevents possible Dht transaction creation if the next tx statements 
> enlist some keys at this node in the future. As well as direct tx map 
> cleaning by means of {{IgniteTxManager#rollbackTx(tx, true, true)}} is not an 
> aid because leads to grid hanging due to undiscovered reasons.  In order to 
> reproduce hanging you need to reapply commit d231a81 and run 
> {{CacheMvccPartitionedSqlCoordinatorFailoverTest}}. Example of hanged thread 
> stack is listed below.
> Our goal is the proper Dht transaction rollback without adding it to 
> {{IgniteTxManager#completedVersHashMap.}}
> {code:java}
> Thread [name="writer-2", id=2281, state=WAITING, blockCnt=40, waitCnt=10260]
>         at sun.misc.Unsafe.park(Native Method)
>         at java.util.concurrent.locks.LockSupport.park(LockSupport.java:304)
>         at 
> o.a.i.i.util.future.GridFutureAdapter.get0(GridFutureAdapter.java:177)
>         at 
> o.a.i.i.util.future.GridFutureAdapter.get(GridFutureAdapter.java:140)
>         at 
> o.a.i.i.processors.query.h2.DmlStatementsProcessor.executeUpdateStatement(DmlStatementsProcessor.java:560)
>         at 
> o.a.i.i.processors.query.h2.DmlStatementsProcessor.updateSqlFields(DmlStatementsProcessor.java:185)
>         at 
> o.a.i.i.processors.query.h2.DmlStatementsProcessor.updateSqlFieldsDistributed(DmlStatementsProcessor.java:358)
>         at 
> o.a.i.i.processors.query.h2.IgniteH2Indexing.doRunPrepared(IgniteH2Indexing.java:2132)
>         at 
> o.a.i.i.processors.query.h2.IgniteH2Indexing.querySqlFields(IgniteH2Indexing.java:2083)
>         at 
> o.a.i.i.processors.query.GridQueryProcessor$4.applyx(GridQueryProcessor.java:2139)
>         at 
> o.a.i.i.processors.query.GridQueryProcessor$4.applyx(GridQueryProcessor.java:2134)
>         at 
> o.a.i.i.util.lang.IgniteOutClosureX.apply(IgniteOutClosureX.java:36)
>         at 
> o.a.i.i.processors.query.GridQueryProcessor.executeQuery(GridQueryProcessor.java:2682)
>         at 
> o.a.i.i.processors.query.GridQueryProcessor.querySqlFields(GridQueryProcessor.java:2148)
>         at 
> o.a.i.i.processors.cache.IgniteCacheProxyImpl.query(IgniteCacheProxyImpl.java:668)
>         at 
> o.a.i.i.processors.cache.IgniteCacheProxyImpl.query(IgniteCacheProxyImpl.java:619)
>         at 
> o.a.i.i.processors.cache.GatewayProtectedCacheProxy.query(GatewayProtectedCacheProxy.java:388)
>         at 
> o.a.i.i.processors.cache.mvcc.CacheMvccAbstractTest.removeSql(CacheMvccAbstractTest.java:832)
>         at 
> o.a.i.i.processors.cache.mvcc.CacheMvccAbstractTest.access$400(CacheMvccAbstractTest.java:104)
>         at 
> o.a.i.i.processors.cache.mvcc.CacheMvccAbstractTest$2.apply(CacheMvccAbstractTest.java:494)
>         at 
> o.a.i.i.processors.cache.mvcc.CacheMvccAbstractTest$2.apply(CacheMvccAbstractTest.java:401)
>         at 
> o.a.i.i.processors.cache.mvcc.CacheMvccAbstractTest$9.call(CacheMvccAbstractTest.java:1294)
>         at 
> o.a.i.i.processors.cache.mvcc.CacheMvccAbstractTest$9.call(CacheMvccAbstractTest.java:1289)
>         at o.a.i.testframework.GridTestThread.run(GridTestThread.java:86)
> {code}
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to