You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by av...@apache.org on 2018/04/25 10:39:23 UTC
ignite git commit: IGNITE-8086 Flaky test timeouts in
Activate/Deactivate Cluster suite
Repository: ignite
Updated Branches:
refs/heads/master 41699c31c -> 39f6e899c
IGNITE-8086 Flaky test timeouts in Activate/Deactivate Cluster suite
Signed-off-by: Anton Vinogradov <av...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/39f6e899
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/39f6e899
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/39f6e899
Branch: refs/heads/master
Commit: 39f6e899c32025daf6afcab9366711381c1e38a7
Parents: 41699c3
Author: Maxim Muzafarov <ma...@gmail.com>
Authored: Wed Apr 25 13:39:13 2018 +0300
Committer: Anton Vinogradov <av...@apache.org>
Committed: Wed Apr 25 13:39:13 2018 +0300
----------------------------------------------------------------------
.../distributed/CacheBaselineTopologyTest.java | 16 +++---
.../junits/common/GridCommonAbstractTest.java | 60 ++++++++++++++++++++
2 files changed, 67 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/39f6e899/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheBaselineTopologyTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheBaselineTopologyTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheBaselineTopologyTest.java
index 22cf205..e543919 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheBaselineTopologyTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheBaselineTopologyTest.java
@@ -452,8 +452,7 @@ public class CacheBaselineTopologyTest extends GridCommonAbstractTest {
.setPartitionLossPolicy(READ_ONLY_SAFE)
);
- for (int i = 0; i < NODE_COUNT; i++)
- grid(i).cache(CACHE_NAME).rebalance().get();
+ manualCacheRebalancing(ignite, CACHE_NAME);
int key = -1;
@@ -575,9 +574,9 @@ public class CacheBaselineTopologyTest extends GridCommonAbstractTest {
IgniteEx primary = null;
IgniteEx backup = null;
- for (int i = 0; i < NODE_COUNT; i++) {
- grid(i).cache(CACHE_NAME).rebalance().get();
+ manualCacheRebalancing(ig, CACHE_NAME);
+ for (int i = 0; i < NODE_COUNT; i++) {
if (grid(i).localNode().equals(affNodes.get(0))) {
primaryIdx = i;
primary = grid(i);
@@ -617,7 +616,7 @@ public class CacheBaselineTopologyTest extends GridCommonAbstractTest {
assertEquals(backup.localNode(), ig.affinity(CACHE_NAME).mapKeyToNode(key));
- primary.cache(CACHE_NAME).rebalance().get();
+ manualCacheRebalancing(ig, CACHE_NAME);
awaitPartitionMapExchange();
@@ -661,9 +660,9 @@ public class CacheBaselineTopologyTest extends GridCommonAbstractTest {
IgniteEx primary = null;
IgniteEx backup = null;
- for (int i = 0; i < NODE_COUNT; i++) {
- grid(i).cache(CACHE_NAME).rebalance().get();
+ manualCacheRebalancing(ig, CACHE_NAME);
+ for (int i = 0; i < NODE_COUNT; i++) {
if (grid(i).localNode().equals(affNodes.get(0))) {
primaryIdx = i;
primary = grid(i);
@@ -725,8 +724,7 @@ public class CacheBaselineTopologyTest extends GridCommonAbstractTest {
assertEquals(val2, primary.cache(CACHE_NAME).get(key));
assertEquals(val2, backup.cache(CACHE_NAME).get(key));
- for (int i = 0; i < NODE_COUNT; i++)
- grid(i).cache(CACHE_NAME).rebalance().get();
+ manualCacheRebalancing(ig, CACHE_NAME);
awaitPartitionMapExchange();
http://git-wip-us.apache.org/repos/asf/ignite/blob/39f6e899/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java
index 9f2f8c4..b992f5c 100755
--- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java
@@ -43,6 +43,7 @@ import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteCompute;
import org.apache.ignite.IgniteEvents;
import org.apache.ignite.IgniteException;
+import org.apache.ignite.IgniteLogger;
import org.apache.ignite.IgniteMessaging;
import org.apache.ignite.Ignition;
import org.apache.ignite.cache.CachePeekMode;
@@ -61,6 +62,7 @@ import org.apache.ignite.events.Event;
import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.IgniteInterruptedCheckedException;
import org.apache.ignite.internal.IgniteKernal;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.affinity.GridAffinityFunctionContextImpl;
@@ -98,6 +100,9 @@ import org.apache.ignite.internal.util.typedef.internal.LT;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteFuture;
import org.apache.ignite.lang.IgnitePredicate;
+import org.apache.ignite.lang.IgniteRunnable;
+import org.apache.ignite.resources.IgniteInstanceResource;
+import org.apache.ignite.resources.LoggerResource;
import org.apache.ignite.testframework.GridTestNode;
import org.apache.ignite.testframework.GridTestUtils;
import org.apache.ignite.testframework.junits.GridAbstractTest;
@@ -951,6 +956,61 @@ public abstract class GridCommonAbstractTest extends GridAbstractTest {
}
/**
+ * Use method for manual rebalaincing cache on all nodes. Note that using
+ * <pre name="code" class="java">
+ * for (int i = 0; i < G.allGrids(); i++)
+ * grid(i).cache(CACHE_NAME).rebalance().get();
+ * </pre>
+ * for rebalancing cache will lead to flaky test cases.
+ *
+ * @param ignite Ignite server instance for getting {@code compute} facade over all cluster nodes.
+ * @param cacheName Cache name for manual rebalancing on cluster. Usually used when used when
+ * {@link CacheConfiguration#getRebalanceDelay()} configuration parameter set to {@code -1} value.
+ * @throws IgniteCheckedException If fails.
+ */
+ protected void manualCacheRebalancing(Ignite ignite,
+ final String cacheName) throws IgniteCheckedException {
+ if (ignite.configuration().isClientMode())
+ return;
+
+ IgniteFuture<Void> fut =
+ ignite.compute().withTimeout(5_000).broadcastAsync(new IgniteRunnable() {
+ /** */
+ @LoggerResource
+ IgniteLogger log;
+
+ /** */
+ @IgniteInstanceResource
+ private Ignite ignite;
+
+ /** {@inheritDoc} */
+ @Override public void run() {
+ IgniteCache<?, ?> cache = ignite.cache(cacheName);
+
+ assertNotNull(cache);
+
+ while (!(Boolean)cache.rebalance().get()) {
+ try {
+ U.sleep(100);
+ }
+ catch (IgniteInterruptedCheckedException e) {
+ throw new IgniteException(e);
+ }
+ }
+
+ if (log.isInfoEnabled())
+ log.info("Manual rebalance finished [node=" + ignite.name() + ", cache=" + cacheName + "]");
+ }
+ });
+
+ assertTrue(GridTestUtils.waitForCondition(new GridAbsPredicate() {
+ @Override public boolean apply() {
+ return fut.isDone();
+ }
+ }, 5_000));
+ }
+
+ /**
* @param id Node id.
* @param major Major ver.
* @param minor Minor ver.