IGNITE-6181 wip.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/047ac12c Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/047ac12c Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/047ac12c Branch: refs/heads/ignite-6181-1 Commit: 047ac12ca65c0738fb95c742b5aaac49a1b37f71 Parents: a6faebd Author: Aleksei Scherbakov <[email protected]> Authored: Wed Sep 13 19:49:50 2017 +0300 Committer: Aleksei Scherbakov <[email protected]> Committed: Wed Sep 13 19:49:50 2017 +0300 ---------------------------------------------------------------------- .../cache/distributed/near/GridNearTxLocal.java | 6 +++--- .../cache/transactions/IgniteTxLocalAdapter.java | 2 +- .../cache/transactions/IgniteTxManager.java | 8 ++++---- .../transactions/TxRollbackOnTimeoutTest.java | 17 ++++++++++++++--- 4 files changed, 22 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/047ac12c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java index ee5797e..0a59cd0 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java @@ -230,7 +230,7 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter implements GridTimeou mappings = implicitSingle ? new IgniteTxMappingsSingleImpl() : new IgniteTxMappingsImpl(); - if (this.timeout() > 0 && !implicit() && !cctx.tm().deadlockDetectionEnabled()) + if (this.timeout() > 0 && !implicit()) cctx.time().addTimeoutObject(this); initResult(); @@ -4014,7 +4014,7 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter implements GridTimeou * Removes timeout handler used for eager rollbacks on timeouts. */ private void removeTimeoutHandler() { - if (timeout() > 0 && !implicit() && !timedOut() && !cctx.tm().deadlockDetectionEnabled()) + if (timeout() > 0 && !implicit() && !timedOut()) cctx.time().removeTimeoutObject(this); } @@ -4025,7 +4025,7 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter implements GridTimeou /** {@inheritDoc} */ @Override public long endTime() { - return startTime() + timeout(); + return startTime() + timeout() - 50; } /** {@inheritDoc} */ http://git-wip-us.apache.org/repos/asf/ignite/blob/047ac12c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java index 7f30981..e7ebaae 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java @@ -1237,7 +1237,7 @@ public abstract class IgniteTxLocalAdapter extends IgniteTxAdapter implements Ig * @throws IgniteCheckedException If transaction check failed. */ protected void checkValid() throws IgniteCheckedException { - if (local() && !dht() && remainingTime() == -1 && cctx.tm().deadlockDetectionEnabled()) + if (local() && !dht() && remainingTime() == -1) state(MARKED_ROLLBACK, true); if (isRollbackOnly()) { http://git-wip-us.apache.org/repos/asf/ignite/blob/047ac12c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java index db7a600..fd4f1b2 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java @@ -1422,10 +1422,7 @@ public class IgniteTxManager extends GridCacheSharedManagerAdapter { */ private void clearThreadMap(IgniteInternalTx tx) { if (tx.local() && !tx.dht()) { - if (!tx.system()) - if (deadlockDetectionEnabled() || !tx.timedOut()) - threadMap.remove(tx.threadId(), tx); - else { + if (!tx.system()) { Integer cacheId = tx.txState().firstCacheId(); if (cacheId != null) @@ -1442,6 +1439,9 @@ public class IgniteTxManager extends GridCacheSharedManagerAdapter { } } } + else if (!tx.timedOut()) + threadMap.remove(tx.threadId(), tx); + } } http://git-wip-us.apache.org/repos/asf/ignite/blob/047ac12c/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutTest.java index 847f2b0..d22b682 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutTest.java @@ -37,6 +37,7 @@ import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder; import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest; import org.apache.ignite.transactions.Transaction; import org.apache.ignite.transactions.TransactionConcurrency; +import org.apache.ignite.transactions.TransactionDeadlockException; import org.apache.ignite.transactions.TransactionIsolation; import org.apache.ignite.transactions.TransactionTimeoutException; import org.jsr166.ThreadLocalRandom8; @@ -100,14 +101,14 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest { @Override protected void beforeTestsStarted() throws Exception { super.beforeTestsStarted(); - System.setProperty(IGNITE_TX_DEADLOCK_DETECTION_MAX_ITERS, "0"); + //System.setProperty(IGNITE_TX_DEADLOCK_DETECTION_MAX_ITERS, "0"); } /** {@inheritDoc} */ @Override protected void afterTestsStopped() throws Exception { super.afterTestsStopped(); - System.clearProperty(IGNITE_TX_DEADLOCK_DETECTION_MAX_ITERS); + //System.clearProperty(IGNITE_TX_DEADLOCK_DETECTION_MAX_ITERS); } /** {@inheritDoc} */ @@ -348,12 +349,22 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest { U.awaitQuiet(l); grid(1).cache(CACHE_NAME).put(1, 1); + + tx.commit(); } + } }, 1, "Second"); - fut1.get(); + try { + fut1.get(); + + fail(); + } + catch (Exception e) { + assertTrue(X.hasCause(e, TransactionDeadlockException.class)); + } fut2.get();
