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 15:16:36 UTC
ignite git commit: ignite-6181-1
Repository: ignite
Updated Branches:
refs/heads/ignite-6181-1 2468e0090 -> 8e89ff291
ignite-6181-1
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/8e89ff29
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/8e89ff29
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/8e89ff29
Branch: refs/heads/ignite-6181-1
Commit: 8e89ff29179651c10c5918c1e8d0928e738ae8ae
Parents: 2468e00
Author: sboikov <sb...@gridgain.com>
Authored: Tue Sep 19 18:01:38 2017 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Tue Sep 19 18:16:29 2017 +0300
----------------------------------------------------------------------
.../IgniteCacheThreadLocalTxTest.java | 64 +++++++++++++---
.../TxRollbackOnTimeoutNearCacheTest.java | 28 +++++++
.../transactions/TxRollbackOnTimeoutTest.java | 79 ++++++++++++++++----
.../ignite/testsuites/IgniteCacheTestSuite.java | 2 +
4 files changed, 149 insertions(+), 24 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/8e89ff29/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheThreadLocalTxTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheThreadLocalTxTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheThreadLocalTxTest.java
index d62bae2..4b08500 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheThreadLocalTxTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheThreadLocalTxTest.java
@@ -22,8 +22,13 @@ import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.IgniteTransactions;
import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.IgniteKernal;
+import org.apache.ignite.internal.util.typedef.G;
import org.apache.ignite.lang.IgniteFuture;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
+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;
@@ -35,26 +40,63 @@ import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL;
*
*/
public class IgniteCacheThreadLocalTxTest extends GridCommonAbstractTest {
+ /** */
+ private static final TcpDiscoveryIpFinder ipFinder = new TcpDiscoveryVmIpFinder(true);
+
+ /** */
+ private boolean client;
+
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
+ IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
+
+ ((TcpDiscoverySpi)cfg.getDiscoverySpi()).setIpFinder(ipFinder);
+
+ cfg.setClientMode(client);
+
+ return cfg;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTest() throws Exception {
+ stopAllGrids();
+
+ super.afterTest();
+ }
+
/**
- *
+ * @throws Exception If failed.
*/
- public IgniteCacheThreadLocalTxTest() {
- super(true);
+ public void testSingleNode() throws Exception {
+ threadLocalTx(startGrid(0));
}
/**
* @throws Exception If failed.
*/
+ public void testMultiNode() throws Exception {
+ startGridsMultiThreaded(4);
+
+ client = true;
+
+ startGrid(4);
+
+ for (Ignite node : G.allGrids())
+ threadLocalTx(node);
+ }
+
+ /**
+ * @param node Node.
+ * @throws Exception If failed.
+ */
@SuppressWarnings("unchecked")
- public void testThreadLocalTx() throws Exception {
+ private void threadLocalTx(Ignite node) throws Exception {
CacheConfiguration ccfg = new CacheConfiguration(DEFAULT_CACHE_NAME);
ccfg.setAtomicityMode(TRANSACTIONAL);
+ ccfg.setBackups(2);
- Ignite node = grid();
-
- IgniteCache<Object, Object> cache = node.createCache(ccfg);
- IgniteTransactions txs = node.transactions();
+ IgniteCache<Object, Object> cache = node.getOrCreateCache(ccfg);
checkNoTx(node);
@@ -73,7 +115,11 @@ public class IgniteCacheThreadLocalTxTest extends GridCommonAbstractTest {
}
}
- assertNull(txs.tx());
+ checkNoTx(node);
+
+ cache.put(1, 1);
+
+ checkNoTx(node);
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/8e89ff29/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutNearCacheTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutNearCacheTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutNearCacheTest.java
new file mode 100644
index 0000000..7c1a6dd
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxRollbackOnTimeoutNearCacheTest.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.cache.transactions;
+
+/**
+ *
+ */
+public class TxRollbackOnTimeoutNearCacheTest extends TxRollbackOnTimeoutTest {
+ /** {@inheritDoc} */
+ @Override protected boolean nearCacheEnabled() {
+ return true;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/8e89ff29/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 caa1545..5dcd4b5 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
@@ -25,10 +25,12 @@ import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.configuration.NearCacheConfiguration;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal;
import org.apache.ignite.internal.util.GridConcurrentSkipListSet;
+import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.G;
import org.apache.ignite.internal.util.typedef.X;
import org.apache.ignite.internal.util.typedef.internal.U;
@@ -45,6 +47,7 @@ import org.apache.ignite.transactions.TransactionTimeoutException;
import org.jsr166.ThreadLocalRandom8;
import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL;
+import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC;
import static org.apache.ignite.transactions.TransactionConcurrency.PESSIMISTIC;
import static org.apache.ignite.transactions.TransactionIsolation.REPEATABLE_READ;
@@ -68,20 +71,35 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest {
@Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
- cfg.setClientMode("client".equals(igniteInstanceName));
-
((TcpDiscoverySpi)cfg.getDiscoverySpi()).setIpFinder(IP_FINDER);
- CacheConfiguration ccfg = new CacheConfiguration(CACHE_NAME);
+ boolean client = "client".equals(igniteInstanceName);
+
+ cfg.setClientMode(client);
+
+ if (!client) {
+ CacheConfiguration ccfg = new CacheConfiguration(CACHE_NAME);
+
+ if (nearCacheEnabled())
+ ccfg.setNearConfiguration(new NearCacheConfiguration());
- ccfg.setAtomicityMode(TRANSACTIONAL);
- ccfg.setBackups(2);
+ ccfg.setAtomicityMode(TRANSACTIONAL);
+ ccfg.setBackups(2);
+ ccfg.setWriteSynchronizationMode(FULL_SYNC);
- cfg.setCacheConfiguration(ccfg);
+ cfg.setCacheConfiguration(ccfg);
+ }
return cfg;
}
+ /**
+ * @return Near cache flag.
+ */
+ protected boolean nearCacheEnabled() {
+ return false;
+ }
+
/** {@inheritDoc} */
@Override protected void beforeTest() throws Exception {
super.beforeTest();
@@ -97,6 +115,23 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest {
}
/**
+ * @throws Exception If f nodeailed.
+ * @return Started client.
+ */
+ private Ignite startClient() throws Exception {
+ Ignite client = startGrid("client");
+
+ assertTrue(client.configuration().isClientMode());
+
+ if (nearCacheEnabled())
+ client.createNearCache(CACHE_NAME, new NearCacheConfiguration<>());
+ else
+ assertNotNull(client.cache(CACHE_NAME));
+
+ return client;
+ }
+
+ /**
* @param e Exception.
*/
protected void validateDeadlockException(Exception e) {
@@ -108,7 +143,7 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest {
* @throws Exception If failed.
*/
public void testLockAndConcurrentTimeout() throws Exception {
- startGrid("client");
+ startClient();
for (Ignite node : G.allGrids()) {
log.info("Test with node: " + node.name());
@@ -169,7 +204,7 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest {
}
}
}
- }, 8, "tx-thread");
+ }, Runtime.getRuntime().availableProcessors(), "tx-thread");
}
/**
@@ -182,7 +217,7 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest {
waitingTxUnblockedOnTimeout(grid(0), grid(1));
- Ignite client = startGrid("client");
+ Ignite client = startClient();
waitingTxUnblockedOnTimeout(grid(0), client);
@@ -205,7 +240,7 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest {
waitingTxUnblockedOnThreadDeath(grid(0), grid(1));
- Ignite client = startGrid("client");
+ Ignite client = startClient();
waitingTxUnblockedOnThreadDeath(grid(0), client);
@@ -228,7 +263,7 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest {
deadlockUnblockedOnTimeout(ignite(0), ignite(0));
- Ignite client = startGrid("client");
+ Ignite client = startClient();
deadlockUnblockedOnTimeout(ignite(0), client);
@@ -290,8 +325,10 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest {
fut1.get();
fut2.get();
- assertTrue("Expecting committed key 2", node1.cache(CACHE_NAME).containsKey(2));
- assertTrue("Expecting committed key 1", node1.cache(CACHE_NAME).containsKey(1));
+ assertTrue("Expecting committed key 2", node1.cache(CACHE_NAME).get(2) != null);
+ assertTrue("Expecting committed key 1", node1.cache(CACHE_NAME).get(1) != null);
+
+ node1.cache(CACHE_NAME).removeAll(F.asSet(1, 2));
}
/**
@@ -300,7 +337,7 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest {
* @throws Exception If failed.
*/
public void testTimeoutRemoval() throws Exception {
- IgniteEx client = (IgniteEx)startGrid("client");
+ IgniteEx client = (IgniteEx)startClient();
final long TX_TIMEOUT = 250;
@@ -423,6 +460,18 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest {
* @throws Exception If failed.
*/
private void waitingTxUnblockedOnTimeout(final Ignite near, final Ignite other) throws Exception {
+ waitingTxUnblockedOnTimeout(near, other, 1000);
+
+ waitingTxUnblockedOnTimeout(near, other, 50);
+ }
+
+ /**
+ * @param near Node starting tx which is timed out.
+ * @param other Node starting second tx.
+ * @param timeout Timeout.
+ * @throws Exception If failed.
+ */
+ private void waitingTxUnblockedOnTimeout(final Ignite near, final Ignite other, final long timeout) throws Exception {
info("Start test [node1=" + near.name() + ", node2=" + other.name() + ']');
final CountDownLatch blocked = new CountDownLatch(1);
@@ -433,7 +482,7 @@ public class TxRollbackOnTimeoutTest extends GridCommonAbstractTest {
IgniteInternalFuture<?> fut1 = GridTestUtils.runAsync(new Runnable() {
@Override public void run() {
- try (Transaction tx = near.transactions().txStart(PESSIMISTIC, REPEATABLE_READ, 1000, 0)) {
+ try (Transaction tx = near.transactions().txStart(PESSIMISTIC, REPEATABLE_READ, timeout, 0)) {
try {
for (int i = 0; i < recordsCnt; i++)
near.cache(CACHE_NAME).put(i, i);
http://git-wip-us.apache.org/repos/asf/ignite/blob/8e89ff29/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
index 99de6c8..260dffa 100755
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
@@ -135,6 +135,7 @@ import org.apache.ignite.internal.processors.cache.distributed.replicated.GridCa
import org.apache.ignite.internal.processors.cache.local.GridCacheLocalTxExceptionSelfTest;
import org.apache.ignite.internal.processors.cache.query.continuous.CacheEntryProcessorExternalizableFailedTest;
import org.apache.ignite.internal.processors.cache.query.continuous.CacheEntryProcessorNonSerializableTest;
+import org.apache.ignite.internal.processors.cache.transactions.TxRollbackOnTimeoutNearCacheTest;
import org.apache.ignite.internal.processors.cache.transactions.TxRollbackOnTimeoutNoDeadlockDetectionTest;
import org.apache.ignite.internal.processors.cache.transactions.TxRollbackOnTimeoutTest;
import org.apache.ignite.internal.processors.datastreamer.DataStreamProcessorSelfTest;
@@ -318,6 +319,7 @@ public class IgniteCacheTestSuite extends TestSuite {
suite.addTestSuite(IgniteIncompleteCacheObjectSelfTest.class);
suite.addTestSuite(TxRollbackOnTimeoutTest.class);
+ suite.addTestSuite(TxRollbackOnTimeoutNearCacheTest.class);
suite.addTestSuite(TxRollbackOnTimeoutNoDeadlockDetectionTest.class);
suite.addTestSuite(IgniteCacheThreadLocalTxTest.class);