You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ag...@apache.org on 2018/04/23 07:12:31 UTC
[35/50] [abbrv] ignite git commit: IGNITE-7791 Fix for Ignite Client
Nodes: failed test
IgniteClientReconnectCacheTest.testReconnectCacheDestroyedAndCreat. - Fixes
#3779.
IGNITE-7791 Fix for Ignite Client Nodes: failed test IgniteClientReconnectCacheTest.testReconnectCacheDestroyedAndCreat. - Fixes #3779.
Signed-off-by: dpavlov <dp...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/9796ec41
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/9796ec41
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/9796ec41
Branch: refs/heads/ignite-6083
Commit: 9796ec41c4925f56f7a8d7f8097d2257f592b559
Parents: 09879b8
Author: Maxim Muzafarov <ma...@gmail.com>
Authored: Thu Apr 19 17:26:50 2018 +0300
Committer: dpavlov <dp...@apache.org>
Committed: Thu Apr 19 17:26:50 2018 +0300
----------------------------------------------------------------------
.../processors/cache/ClusterCachesInfo.java | 7 +-
.../cache/LocalJoinCachesContext.java | 15 ---
.../IgniteClientReconnectDelayedSpiTest.java | 103 +++++++++++++++++++
.../IgniteClientReconnectTestSuite.java | 2 +
4 files changed, 106 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/9796ec41/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java
index 975617e..70ff110 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java
@@ -1905,7 +1905,6 @@ class ClusterCachesInfo {
Set<Integer> stoppedCacheGrps = new HashSet<>();
Set<String> survivedCaches = new HashSet<>();
- Set<Integer> survivedCacheGrps = new HashSet<>();
if (!active) {
joinOnTransition = transition;
@@ -1948,11 +1947,8 @@ class ClusterCachesInfo {
if (stopped)
stoppedCacheGrps.add(locDesc.groupId());
- else {
+ else
assert locDesc.groupId() == desc.groupId();
-
- survivedCacheGrps.add(locDesc.groupId());
- }
}
for (Map.Entry<String, DynamicCacheDescriptor> e : cachesOnDisconnect.caches.entrySet()) {
@@ -1977,7 +1973,6 @@ class ClusterCachesInfo {
}
if (locJoinCachesCtx != null) {
- locJoinCachesCtx.removeSurvivedCacheGroups(survivedCacheGrps);
locJoinCachesCtx.removeSurvivedCaches(survivedCaches);
if (locJoinCachesCtx.isEmpty())
http://git-wip-us.apache.org/repos/asf/ignite/blob/9796ec41/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/LocalJoinCachesContext.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/LocalJoinCachesContext.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/LocalJoinCachesContext.java
index db829b2..f41df60 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/LocalJoinCachesContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/LocalJoinCachesContext.java
@@ -86,11 +86,6 @@ public class LocalJoinCachesContext {
* @param cacheNames Survived caches to clean.
*/
public void removeSurvivedCaches(Set<String> cacheNames) {
- if (cacheDescs != null) {
- for (String cacheName : cacheNames)
- cacheDescs.remove(cacheName);
- }
-
Iterator<T2<DynamicCacheDescriptor, NearCacheConfiguration>> it = locJoinStartCaches.iterator();
for (; it.hasNext();) {
@@ -104,16 +99,6 @@ public class LocalJoinCachesContext {
}
/**
- * @param cacheGrps Survived caches groups to clean.
- */
- public void removeSurvivedCacheGroups(Set<Integer> cacheGrps) {
- if (cacheGrpDescs != null) {
- for (Integer grpId : cacheGrps)
- cacheGrpDescs.remove(grpId);
- }
- }
-
- /**
* @return {@code True} if the context is empty.
*/
public boolean isEmpty() {
http://git-wip-us.apache.org/repos/asf/ignite/blob/9796ec41/modules/core/src/test/java/org/apache/ignite/internal/IgniteClientReconnectDelayedSpiTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/IgniteClientReconnectDelayedSpiTest.java b/modules/core/src/test/java/org/apache/ignite/internal/IgniteClientReconnectDelayedSpiTest.java
new file mode 100644
index 0000000..a4a0912
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/IgniteClientReconnectDelayedSpiTest.java
@@ -0,0 +1,103 @@
+/*
+ * 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;
+
+import org.apache.ignite.Ignite;
+import org.apache.ignite.cluster.ClusterNode;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.managers.discovery.GridDiscoveryManager;
+import org.apache.ignite.internal.processors.cache.CacheAffinityChangeMessage;
+import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsAbstractMessage;
+import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsSingleMessage;
+import org.apache.ignite.internal.util.lang.GridAbsPredicate;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.lang.IgniteBiPredicate;
+import org.apache.ignite.plugin.extensions.communication.Message;
+import org.apache.ignite.testframework.GridTestUtils;
+
+/**
+ * Test cases for emulation of delayed messages sending with {@link TestRecordingCommunicationSpi} for blocking and
+ * resending messages at the moment we need it.
+ */
+public class IgniteClientReconnectDelayedSpiTest extends IgniteClientReconnectAbstractTest {
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
+ IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
+
+ TestRecordingCommunicationSpi spi = new TestRecordingCommunicationSpi();
+
+ cfg.setCommunicationSpi(spi);
+ cfg.setCacheConfiguration(new CacheConfiguration("preconfigured-cache"));
+
+ return cfg;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected int serverCount() {
+ return 3;
+ }
+
+ /**
+ * Test checks correctness of stale {@link CacheAffinityChangeMessage} processing by client node as delayed
+ * {@link GridDhtPartitionsSingleMessage} with exchId = null sends after client node reconnect happens.
+ *
+ * @throws Exception If failed.
+ */
+ public void testReconnectCacheDestroyedDelayedAffinityChange() throws Exception {
+ Ignite ignite = ignite(1);
+
+ TestRecordingCommunicationSpi spi = TestRecordingCommunicationSpi.spi(ignite);
+
+ spi.blockMessages(GridDhtPartitionsSingleMessage.class, ignite.name());
+ spi.blockMessages(new IgniteBiPredicate<ClusterNode, Message>() {
+ @Override public boolean apply(ClusterNode node, Message msg) {
+ return (msg instanceof GridDhtPartitionsSingleMessage) &&
+ ((GridDhtPartitionsAbstractMessage)msg).exchangeId() == null;
+ }
+ });
+
+ final Ignite client = startGrid(getConfiguration().setClientMode(true));
+
+ client.getOrCreateCache(new CacheConfiguration<>(DEFAULT_CACHE_NAME));
+
+ final Ignite srv = clientRouter(client);
+
+ reconnectClientNode(client, srv, new Runnable() {
+ @Override public void run() {
+ srv.destroyCache(DEFAULT_CACHE_NAME);
+
+ srv.getOrCreateCache(new CacheConfiguration<>(DEFAULT_CACHE_NAME));
+ }
+ });
+
+ // Resend delayed GridDhtPartitionsSingleMessage.
+ spi.waitForBlocked();
+ spi.stopBlock();
+
+ assertNotNull(client.cache(DEFAULT_CACHE_NAME));
+
+ final GridDiscoveryManager srvDisco = ((IgniteEx)srv).context().discovery();
+
+ assertTrue(GridTestUtils.waitForCondition(new GridAbsPredicate() {
+ @Override public boolean apply() {
+ return F.eq(true, srvDisco.cacheClientNode(client.cluster().localNode(), DEFAULT_CACHE_NAME));
+ }
+ }, 5000));
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9796ec41/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteClientReconnectTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteClientReconnectTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteClientReconnectTestSuite.java
index d0e907c..d5ebd15 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteClientReconnectTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteClientReconnectTestSuite.java
@@ -26,6 +26,7 @@ import org.apache.ignite.internal.IgniteClientReconnectCacheTest;
import org.apache.ignite.internal.IgniteClientReconnectCollectionsTest;
import org.apache.ignite.internal.IgniteClientReconnectComputeTest;
import org.apache.ignite.internal.IgniteClientReconnectContinuousProcessorTest;
+import org.apache.ignite.internal.IgniteClientReconnectDelayedSpiTest;
import org.apache.ignite.internal.IgniteClientReconnectDiscoveryStateTest;
import org.apache.ignite.internal.IgniteClientReconnectFailoverTest;
import org.apache.ignite.internal.IgniteClientReconnectServicesTest;
@@ -49,6 +50,7 @@ public class IgniteClientReconnectTestSuite extends TestSuite {
suite.addTestSuite(IgniteClientReconnectApiExceptionTest.class);
suite.addTestSuite(IgniteClientReconnectDiscoveryStateTest.class);
suite.addTestSuite(IgniteClientReconnectCacheTest.class);
+ suite.addTestSuite(IgniteClientReconnectDelayedSpiTest.class);
suite.addTestSuite(IgniteClientReconnectBinaryContexTest.class);
suite.addTestSuite(IgniteClientReconnectContinuousProcessorTest.class);
suite.addTestSuite(IgniteClientReconnectComputeTest.class);