You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2017/09/19 14:45:54 UTC
[28/50] [abbrv] ignite git commit: IGNITE-6181 wip.
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/3097d8d8
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/3097d8d8
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/3097d8d8
Branch: refs/heads/ignite-6181-1
Commit: 3097d8d81872a353970031ef115b4f18a67c19e2
Parents: 12669b8
Author: ascherbakoff <al...@gmail.com>
Authored: Sat Sep 9 17:23:36 2017 +0300
Committer: ascherbakoff <al...@gmail.com>
Committed: Sat Sep 9 17:23:36 2017 +0300
----------------------------------------------------------------------
.../cache/distributed/near/GridNearTxLocal.java | 6 ++--
.../transactions/TxRollbackOnTimeoutTest.java | 29 ++++++++++++++++----
2 files changed, 27 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/3097d8d8/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 8d15e87..fb4c5e1 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
@@ -3266,9 +3266,6 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter implements GridTimeou
if (log.isDebugEnabled())
log.debug("Rolling back near tx: " + this);
- if (remainingTime() > 0 && !implicit())
- cctx.time().removeTimeoutObject(this);
-
if (fastFinish()) {
state(PREPARING);
state(PREPARED);
@@ -3696,6 +3693,9 @@ public class GridNearTxLocal extends GridDhtTxLocalAdapter implements GridTimeou
/** {@inheritDoc} */
@Override public void close() throws IgniteCheckedException {
+ if (timeout() > 0 && !implicit())
+ cctx.time().removeTimeoutObject(this);
+
TransactionState state = state();
if (state != ROLLING_BACK && state != ROLLED_BACK && state != COMMITTING && state != COMMITTED)
http://git-wip-us.apache.org/repos/asf/ignite/blob/3097d8d8/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 d854cf0..3d25d10 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
@@ -30,11 +30,13 @@ import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal;
import org.apache.ignite.internal.processors.timeout.GridTimeoutProcessor;
import org.apache.ignite.internal.util.GridConcurrentSkipListSet;
+import org.apache.ignite.internal.util.typedef.X;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
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.TransactionTimeoutException;
import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL;
import static org.apache.ignite.transactions.TransactionConcurrency.PESSIMISTIC;
@@ -209,10 +211,20 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest {
IgniteEx client = (IgniteEx)startGrid("client");
for (int i = 0; i < 5; i++)
- testTimeoutRemoval(grid(0), i);
+ testTimeoutRemoval0(grid(0), i, TX_TIMEOUT);
for (int i = 0; i < 5; i++)
- testTimeoutRemoval(client, i);
+ testTimeoutRemoval0(client, i, TX_TIMEOUT);
+
+ for (int i = 0; i < 5; i++)
+ testTimeoutRemoval0(grid(0), i, 1);
+
+ for (int i = 0; i < 5; i++)
+ testTimeoutRemoval0(client, i, 1);
+
+ // Repeat with more iterations to make sure everything is cleared.
+ for (int i = 0; i < 500; i++)
+ testTimeoutRemoval0(client, 2, 1);
}
/**
@@ -220,10 +232,10 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest {
* @param mode Test mode.
* @throws Exception If failed.
*/
- private void testTimeoutRemoval(IgniteEx near, int mode) throws Exception {
+ private void testTimeoutRemoval0(IgniteEx near, int mode, long timeout) throws Exception {
GridTimeoutProcessor timeProc = near.context().cache().context().time();
- try (Transaction tx = near.transactions().txStart()) {
+ try (Transaction tx = near.transactions().txStart(PESSIMISTIC, REPEATABLE_READ, timeout, 1)) {
near.cache(CACHE_NAME).put(1, 1);
switch (mode) {
@@ -250,11 +262,18 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest {
fail();
}
}
+ catch (TransactionTimeoutException e) {
+ // No-op.
+ }
+ catch (CacheException e) {
+ assertTrue("Only timeout exception is possible", X.hasCause(e, TransactionTimeoutException.class));
+ }
GridConcurrentSkipListSet set = U.field(timeProc, "timeoutObjs");
for (Object obj : set)
- assertFalse("Not remove for mode: " + mode, obj.getClass().isAssignableFrom(GridNearTxLocal.class));
+ assertFalse("Not remove for mode=" + mode + " and timeout=" + timeout,
+ obj.getClass().isAssignableFrom(GridNearTxLocal.class));
}
/**