Repository: ignite Updated Branches: refs/heads/ignite-7725 e3aa02a1e -> b8dd0cf19
IGNITE-7694 Fixing cluster activation tests Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/210ad201 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/210ad201 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/210ad201 Branch: refs/heads/ignite-7725 Commit: 210ad201a2f6df071e3a2e1c5812e9e28afa1be5 Parents: d596be7 Author: Alexey Goncharuk <[email protected]> Authored: Fri Feb 16 10:58:24 2018 +0300 Committer: Alexey Goncharuk <[email protected]> Committed: Fri Feb 16 10:58:24 2018 +0300 ---------------------------------------------------------------------- .../cache/CacheAffinitySharedManager.java | 10 +- ...gniteAbstractStandByClientReconnectTest.java | 133 +++++++++++++++---- .../IgniteStandByClientReconnectTest.java | 94 ++++++------- 3 files changed, 159 insertions(+), 78 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/210ad201/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java index 9ab052d..7397a45 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java @@ -70,6 +70,7 @@ import org.apache.ignite.internal.util.typedef.internal.CU; import org.apache.ignite.internal.util.typedef.internal.U; import org.apache.ignite.lang.IgniteBiInClosure; import org.apache.ignite.lang.IgniteClosure; +import org.apache.ignite.lang.IgniteFuture; import org.apache.ignite.lang.IgniteInClosure; import org.apache.ignite.lang.IgniteUuid; import org.jetbrains.annotations.Nullable; @@ -160,17 +161,18 @@ public class CacheAffinitySharedManager<K, V> extends GridCacheSharedManagerAdap ClusterNode node, AffinityTopologyVersion topVer, DiscoveryDataClusterState state) { + if (type == EVT_NODE_JOINED && node.isLocal()) + lastAffVer = null; + if ((state.transition() || !state.active()) && !DiscoveryCustomEvent.requiresCentralizedAffinityAssignment(customMsg)) return; - if (type == EVT_NODE_JOINED && node.isLocal()) - lastAffVer = null; - if ((!CU.clientNode(node) && (type == EVT_NODE_FAILED || type == EVT_NODE_JOINED || type == EVT_NODE_LEFT)) || DiscoveryCustomEvent.requiresCentralizedAffinityAssignment(customMsg)) { synchronized (mux) { - assert lastAffVer == null || topVer.compareTo(lastAffVer) > 0; + assert lastAffVer == null || topVer.compareTo(lastAffVer) > 0 : + "lastAffVer=" + lastAffVer + ", topVer=" + topVer + ", customMsg=" + customMsg; lastAffVer = topVer; } http://git-wip-us.apache.org/repos/asf/ignite/blob/210ad201/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/reconnect/IgniteAbstractStandByClientReconnectTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/reconnect/IgniteAbstractStandByClientReconnectTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/reconnect/IgniteAbstractStandByClientReconnectTest.java index 4de1f34..954e0c6 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/reconnect/IgniteAbstractStandByClientReconnectTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/reconnect/IgniteAbstractStandByClientReconnectTest.java @@ -17,12 +17,12 @@ package org.apache.ignite.internal.processors.cache.persistence.standbycluster.reconnect; -import com.google.common.collect.Sets; import java.util.Collection; import java.util.Collections; import java.util.Map; import java.util.Set; import java.util.concurrent.CountDownLatch; +import com.google.common.collect.Sets; import org.apache.ignite.cluster.ClusterNode; import org.apache.ignite.configuration.CacheConfiguration; import org.apache.ignite.configuration.DataRegionConfiguration; @@ -33,7 +33,6 @@ import org.apache.ignite.events.EventType; import org.apache.ignite.internal.IgniteEx; import org.apache.ignite.internal.processors.cache.DynamicCacheDescriptor; import org.apache.ignite.internal.util.typedef.internal.CU; -import org.apache.ignite.internal.util.typedef.internal.U; import org.apache.ignite.lang.IgnitePredicate; import org.apache.ignite.spi.discovery.DiscoverySpiCustomMessage; import org.apache.ignite.spi.discovery.DiscoverySpiListener; @@ -49,55 +48,87 @@ import static org.apache.ignite.events.EventType.EVT_CLIENT_NODE_DISCONNECTED; * */ public abstract class IgniteAbstractStandByClientReconnectTest extends GridCommonAbstractTest { - + /** */ private static final TcpDiscoveryVmIpFinder vmIpFinder = new TcpDiscoveryVmIpFinder(true); + /** */ private static final TcpDiscoveryVmIpFinder clientIpFinder = new TcpDiscoveryVmIpFinder(true); - protected final String node1 = "node1"; - protected final String node2 = "node2"; - protected final String nodeClient = "nodeClient"; + /** */ + protected static final String node1 = "node1"; + + /** */ + protected static final String node2 = "node2"; + + /** */ + protected static final String nodeClient = "nodeClient"; + + /** */ + protected static final String ccfg1staticName = "cache1static"; + + /** */ + protected static final String ccfg2staticName = "cache2static"; + + /** */ + protected static final String ccfg3staticName = "cache3static"; - protected final String ccfg1staticName = "cache1static"; - protected final String ccfg2staticName = "cache2static"; - protected final String ccfg3staticName = "cache3static"; + /** */ + protected static final String ccfg1staticWithFilterName = "ccfg1staticWithFilter"; - protected final String ccfg1staticWithFilterName = "ccfg1staticWithFilter"; - protected final String ccfg2staticWithFilterName = "ccfg2staticWithFilter"; - protected final String ccfg3staticWithFilterName = "ccfg3staticWithFilter"; + /** */ + protected static final String ccfg2staticWithFilterName = "ccfg2staticWithFilter"; - protected final String ccfgDynamicName = "ccfgDynamic"; - protected final String ccfgDynamicWithFilterName = "ccfgDynamicWithFilter"; + /** */ + protected static final String ccfg3staticWithFilterName = "ccfg3staticWithFilter"; + /** */ + protected static final String ccfgDynamicName = "ccfgDynamic"; + + /** */ + protected static final String ccfgDynamicWithFilterName = "ccfgDynamicWithFilter"; + + /** */ protected final CacheConfiguration ccfg1static = new CacheConfiguration(ccfg1staticName); + + /** */ protected final CacheConfiguration ccfg2static = new CacheConfiguration(ccfg2staticName); + + /** */ protected final CacheConfiguration ccfg3static = new CacheConfiguration(ccfg3staticName); + /** */ protected final CacheConfiguration ccfg1staticWithFilter = new CacheConfiguration(ccfg1staticWithFilterName).setNodeFilter(new FilterNode(node2)); + /** */ protected final CacheConfiguration ccfg2staticWithFilter = new CacheConfiguration(ccfg2staticWithFilterName).setNodeFilter(new FilterNode(nodeClient)); + /** */ protected final CacheConfiguration ccfg3staticWithFilter = new CacheConfiguration(ccfg3staticWithFilterName).setNodeFilter(new FilterNode(node1)); - protected final CacheConfiguration ccfgDynamic = new CacheConfiguration(ccfgDynamicName); + /** */ + protected final CacheConfiguration<Object, Object> ccfgDynamic = new CacheConfiguration<>(ccfgDynamicName); - protected final CacheConfiguration ccfgDynamicWithFilter = - new CacheConfiguration(ccfgDynamicWithFilterName).setNodeFilter(new FilterNode(node2)); + /** */ + protected final CacheConfiguration<Object, Object> ccfgDynamicWithFilter = + new CacheConfiguration<>(ccfgDynamicWithFilterName).setNodeFilter(new FilterNode(node2)); + /** */ protected final Set<String> staticCacheNames = Sets.newHashSet( ccfg1staticName, ccfg2staticName, ccfg3staticName, ccfg1staticWithFilterName, ccfg2staticWithFilterName, ccfg3staticWithFilterName ); + /** */ protected final Set<String> allCacheNames = Sets.newHashSet( ccfg1staticName, ccfg2staticName, ccfg3staticName, ccfg1staticWithFilterName, ccfg2staticWithFilterName, ccfg3staticWithFilterName, ccfgDynamicName, ccfgDynamicWithFilterName ); + /** {@inheritDoc} */ @Override protected IgniteConfiguration getConfiguration(String name) throws Exception { IgniteConfiguration cfg = super.getConfiguration(name); @@ -121,6 +152,10 @@ public abstract class IgniteAbstractStandByClientReconnectTest extends GridCommo return cfg; } + /** + * @param disconnectedLatch Disconnect latch. Will be fired when client disconnect event is received. + * @param reconnectedLatch Reconnect latch. Will be fired when cilent reconnect event is receoved. + */ protected void addDisconnectListener( final CountDownLatch disconnectedLatch, final CountDownLatch reconnectedLatch @@ -145,6 +180,10 @@ public abstract class IgniteAbstractStandByClientReconnectTest extends GridCommo }, EventType.EVT_CLIENT_NODE_DISCONNECTED, EventType.EVT_CLIENT_NODE_RECONNECTED); } + /** + * @param ig Ignite. + * @param cacheNames Cache names. + */ protected void checkDescriptors(IgniteEx ig, Set<String> cacheNames) { Collection<DynamicCacheDescriptor> descs = ig.context().cache().cacheDescriptors().values(); @@ -161,6 +200,10 @@ public abstract class IgniteAbstractStandByClientReconnectTest extends GridCommo assertEquals(1, systemCnt); } + /** + * @param activateLatch Activate latch. Will be fired when cluster is activated. + * @throws Exception If failed. + */ protected void startNodes(CountDownLatch activateLatch) throws Exception { IgniteConfiguration cfg1 = getConfiguration(node1) .setCacheConfiguration(ccfg1static, ccfg1staticWithFilter); @@ -179,11 +222,14 @@ public abstract class IgniteAbstractStandByClientReconnectTest extends GridCommo cfg3.setClientMode(true); - IgniteEx ig1 = startGrid(cfg1); - IgniteEx ig2 = startGrid(cfg2); - IgniteEx client = startGrid(cfg3); + startGrid(cfg1); + startGrid(cfg2); + startGrid(cfg3); } + /** + * + */ protected void checkStaticCaches() { IgniteEx ig1 = grid(node1); IgniteEx ig2 = grid(node2); @@ -211,6 +257,9 @@ public abstract class IgniteAbstractStandByClientReconnectTest extends GridCommo Assert.assertNotNull(client.cache(ccfg1staticWithFilterName)); } + /** + * + */ protected void checkAllCaches() { IgniteEx ig1 = grid(node1); IgniteEx ig2 = grid(node2); @@ -227,6 +276,9 @@ public abstract class IgniteAbstractStandByClientReconnectTest extends GridCommo Assert.assertNotNull(client.cache(ccfgDynamicWithFilterName)); } + /** + * + */ protected void checkOnlySystemCaches() { IgniteEx ig1 = grid(node1); IgniteEx ig2 = grid(node2); @@ -253,43 +305,67 @@ public abstract class IgniteAbstractStandByClientReconnectTest extends GridCommo Assert.assertNull(client.cache(ccfg3staticWithFilterName)); Assert.assertNull(client.cache(ccfg1staticWithFilterName)); - checkDescriptors(ig1,Collections.<String>emptySet()); - checkDescriptors(ig2,Collections.<String>emptySet()); - checkDescriptors(client, Collections.<String>emptySet()); + checkDescriptors(ig1,Collections.emptySet()); + checkDescriptors(ig2,Collections.emptySet()); + checkDescriptors(client, Collections.emptySet()); } + /** + * + */ private static class FilterNode implements IgnitePredicate<ClusterNode> { - + /** */ private final String consistentId; + /** + * @param id Consistent ID. + */ private FilterNode(String id) { consistentId = id; } + /** {@inheritDoc} */ @Override public boolean apply(ClusterNode node) { return !consistentId.equals(node.consistentId()); } } + /** + * + */ private static class AwaitTcpDiscoverySpi extends TcpDiscoverySpi { - + /** */ private final CountDownLatch latch; + /** + * @param latch Latch. + */ private AwaitTcpDiscoverySpi(CountDownLatch latch) { this.latch = latch; } + /** + * @param lsnr Listener. + */ @Override public void setListener(@Nullable DiscoverySpiListener lsnr) { super.setListener(new AwaitDiscoverySpiListener(latch, lsnr)); } } + /** + * + */ private static class AwaitDiscoverySpiListener implements DiscoverySpiListener { - + /** */ private final CountDownLatch latch; + /** */ private final DiscoverySpiListener delegate; + /** + * @param latch Latch. + * @param delegate Delegate. + */ private AwaitDiscoverySpiListener( CountDownLatch latch, DiscoverySpiListener delegate @@ -298,10 +374,12 @@ public abstract class IgniteAbstractStandByClientReconnectTest extends GridCommo this.delegate = delegate; } + /** {@inheritDoc} */ @Override public void onLocalNodeInitialized(ClusterNode locNode) { delegate.onLocalNodeInitialized(locNode); } + /** {@inheritDoc} */ @Override public void onDiscovery( int type, long topVer, @@ -324,6 +402,7 @@ public abstract class IgniteAbstractStandByClientReconnectTest extends GridCommo } } + /** {@inheritDoc} */ @Override protected void beforeTest() throws Exception { super.beforeTest(); @@ -332,6 +411,7 @@ public abstract class IgniteAbstractStandByClientReconnectTest extends GridCommo cleanPersistenceDir(); } + /** {@inheritDoc} */ @Override protected void afterTest() throws Exception { super.beforeTest(); @@ -339,5 +419,4 @@ public abstract class IgniteAbstractStandByClientReconnectTest extends GridCommo cleanPersistenceDir(); } - } http://git-wip-us.apache.org/repos/asf/ignite/blob/210ad201/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/reconnect/IgniteStandByClientReconnectTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/reconnect/IgniteStandByClientReconnectTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/reconnect/IgniteStandByClientReconnectTest.java index 548dba2..d2244d4 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/reconnect/IgniteStandByClientReconnectTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/reconnect/IgniteStandByClientReconnectTest.java @@ -38,11 +38,11 @@ public class IgniteStandByClientReconnectTest extends IgniteAbstractStandByClien IgniteEx ig2 = grid(node2); IgniteEx client = grid(nodeClient); - assertTrue(!ig1.active()); - assertTrue(!ig2.active()); - assertTrue(!client.active()); + assertTrue(!ig1.cluster().active()); + assertTrue(!ig2.cluster().active()); + assertTrue(!client.cluster().active()); - client.active(true); + client.cluster().active(true); info(">>>> activate grid"); @@ -58,9 +58,9 @@ public class IgniteStandByClientReconnectTest extends IgniteAbstractStandByClien info(">>>> dynamic start [" + ccfgDynamicName + ", " + ccfgDynamicWithFilterName + "]"); - assertTrue(ig1.active()); - assertTrue(ig2.active()); - assertTrue(client.active()); + assertTrue(ig1.cluster().active()); + assertTrue(ig2.cluster().active()); + assertTrue(client.cluster().active()); checkDescriptors(ig1, allCacheNames); checkDescriptors(ig2, allCacheNames); @@ -81,10 +81,10 @@ public class IgniteStandByClientReconnectTest extends IgniteAbstractStandByClien info(">>>> activate new servers"); - ig1.active(true); + ig1.cluster().active(true); - assertTrue(ig1.active()); - assertTrue(ig2.active()); + assertTrue(ig1.cluster().active()); + assertTrue(ig2.cluster().active()); activateLatch.countDown(); @@ -94,9 +94,9 @@ public class IgniteStandByClientReconnectTest extends IgniteAbstractStandByClien info(">>>> client reconnected"); - assertTrue(ig1.active()); - assertTrue(ig2.active()); - assertTrue(client.active()); + assertTrue(ig1.cluster().active()); + assertTrue(ig2.cluster().active()); + assertTrue(client.cluster().active()); checkDescriptors(ig1, allCacheNames); checkDescriptors(ig2, allCacheNames); @@ -119,13 +119,13 @@ public class IgniteStandByClientReconnectTest extends IgniteAbstractStandByClien IgniteEx ig2 = grid(node2); IgniteEx client = grid(nodeClient); - assertTrue(!ig1.active()); - assertTrue(!ig2.active()); - assertTrue(!client.active()); + assertTrue(!ig1.cluster().active()); + assertTrue(!ig2.cluster().active()); + assertTrue(!client.cluster().active()); info(">>>> activate grid"); - client.active(true); + client.cluster().active(true); checkStaticCaches(); @@ -143,9 +143,9 @@ public class IgniteStandByClientReconnectTest extends IgniteAbstractStandByClien checkDescriptors(ig2, allCacheNames); checkDescriptors(client, allCacheNames); - assertTrue(ig1.active()); - assertTrue(ig2.active()); - assertTrue(client.active()); + assertTrue(ig1.cluster().active()); + assertTrue(ig2.cluster().active()); + assertTrue(client.cluster().active()); final CountDownLatch disconnectedLatch = new CountDownLatch(1); final CountDownLatch reconnectedLatch = new CountDownLatch(1); @@ -158,7 +158,7 @@ public class IgniteStandByClientReconnectTest extends IgniteAbstractStandByClien disconnectedLatch.await(); - ig1.active(false); + ig1.cluster().active(false); activateLatch.countDown(); @@ -168,15 +168,15 @@ public class IgniteStandByClientReconnectTest extends IgniteAbstractStandByClien reconnectedLatch.await(); - assertTrue(!ig1.active()); - assertTrue(!ig2.active()); - assertTrue(!client.active()); + assertTrue(!ig1.cluster().active()); + assertTrue(!ig2.cluster().active()); + assertTrue(!client.cluster().active()); - client.active(true); + client.cluster().active(true); - assertTrue(ig1.active()); - assertTrue(ig2.active()); - assertTrue(client.active()); + assertTrue(ig1.cluster().active()); + assertTrue(ig2.cluster().active()); + assertTrue(client.cluster().active()); checkDescriptors(ig1, allCacheNames); checkDescriptors(ig2, allCacheNames); @@ -197,9 +197,9 @@ public class IgniteStandByClientReconnectTest extends IgniteAbstractStandByClien IgniteEx ig2 = grid(node2); IgniteEx client = grid(nodeClient); - assertTrue(!ig1.active()); - assertTrue(!ig2.active()); - assertTrue(!client.active()); + assertTrue(!ig1.cluster().active()); + assertTrue(!ig2.cluster().active()); + assertTrue(!client.cluster().active()); final CountDownLatch disconnectedLatch = new CountDownLatch(1); final CountDownLatch reconnectedLatch = new CountDownLatch(1); @@ -212,10 +212,10 @@ public class IgniteStandByClientReconnectTest extends IgniteAbstractStandByClien ig2 = startGrid(getConfiguration(node2)); - ig1.active(true); + ig1.cluster().active(true); - assertTrue(ig1.active()); - assertTrue(ig2.active()); + assertTrue(ig1.cluster().active()); + assertTrue(ig2.cluster().active()); checkDescriptors(ig1, staticCacheNames); checkDescriptors(ig2, staticCacheNames); @@ -224,9 +224,9 @@ public class IgniteStandByClientReconnectTest extends IgniteAbstractStandByClien reconnectedLatch.await(); - assertTrue(ig1.active()); - assertTrue(ig2.active()); - assertTrue(client.active()); + assertTrue(ig1.cluster().active()); + assertTrue(ig2.cluster().active()); + assertTrue(client.cluster().active()); checkDescriptors(ig1, staticCacheNames); checkDescriptors(ig2, staticCacheNames); @@ -252,9 +252,9 @@ public class IgniteStandByClientReconnectTest extends IgniteAbstractStandByClien IgniteEx ig2 = grid(node2); IgniteEx client = grid(nodeClient); - assertTrue(!ig1.active()); - assertTrue(!ig2.active()); - assertTrue(!client.active()); + assertTrue(!ig1.cluster().active()); + assertTrue(!ig2.cluster().active()); + assertTrue(!client.cluster().active()); final CountDownLatch disconnectedLatch = new CountDownLatch(1); final CountDownLatch reconnectedLatch = new CountDownLatch(1); @@ -269,15 +269,15 @@ public class IgniteStandByClientReconnectTest extends IgniteAbstractStandByClien reconnectedLatch.await(); - assertTrue(!ig1.active()); - assertTrue(!ig2.active()); - assertTrue(!client.active()); + assertTrue(!ig1.cluster().active()); + assertTrue(!ig2.cluster().active()); + assertTrue(!client.cluster().active()); - client.active(true); + client.cluster().active(true); - assertTrue(ig1.active()); - assertTrue(ig2.active()); - assertTrue(client.active()); + assertTrue(ig1.cluster().active()); + assertTrue(ig2.cluster().active()); + assertTrue(client.cluster().active()); checkStaticCaches();
