[jira] [Commented] (IGNITE-9133) MVCC: Proper empty DHT transactions handling.

2018-10-11 Thread ASF GitHub Bot (JIRA)


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

ASF GitHub Bot commented on IGNITE-9133:


Github user devozerov closed the pull request at:

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


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


[jira] [Commented] (IGNITE-9133) MVCC: Proper empty DHT transactions handling.

2018-10-10 Thread Vladimir Ozerov (JIRA)


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

Vladimir Ozerov commented on IGNITE-9133:
-

Test run: 
https://ci.ignite.apache.org/viewQueued.html?itemId=2051317=queuedBuildOverviewTab

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


[jira] [Commented] (IGNITE-9133) MVCC: Proper empty DHT transactions handling.

2018-10-10 Thread ASF GitHub Bot (JIRA)


[ 
https://issues.apache.org/jira/browse/IGNITE-9133?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=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 
Date:   2018-10-10T10:30:29Z

Test.

commit 233b2501c931b71f3551ace963b926651af47a6f
Author: devozerov 
Date:   2018-10-10T10:36:37Z

WIP.

commit 1539e79319ba3fd091fa7e0e4b7601af671976ec
Author: devozerov 
Date:   2018-10-10T10:37:00Z

WIP.

commit ffb2e4fb617d5af4c1f88542e79dad1f884f95f4
Author: devozerov 
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)
>