Return-Path: X-Original-To: apmail-ignite-commits-archive@minotaur.apache.org Delivered-To: apmail-ignite-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id A8D8218CE3 for ; Fri, 18 Dec 2015 11:14:31 +0000 (UTC) Received: (qmail 8117 invoked by uid 500); 18 Dec 2015 11:14:31 -0000 Delivered-To: apmail-ignite-commits-archive@ignite.apache.org Received: (qmail 8042 invoked by uid 500); 18 Dec 2015 11:14:31 -0000 Mailing-List: contact commits-help@ignite.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ignite.apache.org Delivered-To: mailing list commits@ignite.apache.org Received: (qmail 7812 invoked by uid 99); 18 Dec 2015 11:14:31 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 18 Dec 2015 11:14:31 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 45CE8E0454; Fri, 18 Dec 2015 11:14:31 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: sboikov@apache.org To: commits@ignite.apache.org Date: Fri, 18 Dec 2015 11:14:37 -0000 Message-Id: In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [7/9] ignite git commit: ignite-1.5 Fixed client discovery impl to skip discovery message processing while disconnected. ignite-1.5 Fixed client discovery impl to skip discovery message processing while disconnected. Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/9ed39096 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/9ed39096 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/9ed39096 Branch: refs/heads/ignite-1537 Commit: 9ed39096100cdd9a937e33ffcbe8b46784616ff9 Parents: a8beeae Author: sboikov Authored: Fri Dec 18 14:11:02 2015 +0300 Committer: sboikov Committed: Fri Dec 18 14:11:02 2015 +0300 ---------------------------------------------------------------------- .../discovery/GridDiscoveryManager.java | 4 +- .../ignite/spi/discovery/tcp/ClientImpl.java | 48 +++++++++++--------- .../IgniteClientReconnectCacheTest.java | 26 +++++++++-- 3 files changed, 52 insertions(+), 26 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/9ed39096/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java index 92d66d7..72a2bef 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java @@ -1641,7 +1641,9 @@ public class GridDiscoveryManager extends GridManagerAdapter { if (cache == null) { throw new IgniteException("Failed to resolve nodes topology [cacheName=" + cacheName + - ", topVer=" + topVer + ", history=" + discoCacheHist.keySet() + + ", topVer=" + topVer + + ", history=" + discoCacheHist.keySet() + + ", snap=" + snap + ", locNode=" + ctx.discovery().localNode() + ']'); } http://git-wip-us.apache.org/repos/asf/ignite/blob/9ed39096/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java index 8f6c8a9..850cc24 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java @@ -1828,36 +1828,42 @@ class ClientImpl extends TcpDiscoveryImpl { return; } - if (!getLocalNodeId().equals(msg.creatorNodeId())) { - TcpDiscoveryNode node = rmtNodes.remove(msg.failedNodeId()); + if (nodeAdded()) { + if (!getLocalNodeId().equals(msg.creatorNodeId())) { + TcpDiscoveryNode node = rmtNodes.remove(msg.failedNodeId()); - if (node == null) { - if (log.isDebugEnabled()) - log.debug("Discarding node failed message since node is not found [msg=" + msg + ']'); + if (node == null) { + if (log.isDebugEnabled()) + log.debug("Discarding node failed message since node is not found [msg=" + msg + ']'); - return; - } + return; + } - Collection top = updateTopologyHistory(msg.topologyVersion(), msg); + Collection top = updateTopologyHistory(msg.topologyVersion(), msg); - if (state != CONNECTED) { - if (log.isDebugEnabled()) - log.debug("Discarding node failed message (join process is not finished): " + msg); + if (state != CONNECTED) { + if (log.isDebugEnabled()) + log.debug("Discarding node failed message (join process is not finished): " + msg); - return; - } + return; + } - if (msg.warning() != null) { - ClusterNode creatorNode = rmtNodes.get(msg.creatorNodeId()); + if (msg.warning() != null) { + ClusterNode creatorNode = rmtNodes.get(msg.creatorNodeId()); - U.warn(log, "Received EVT_NODE_FAILED event with warning [" + - "nodeInitiatedEvt=" + (creatorNode != null ? creatorNode : msg.creatorNodeId()) + - ", msg=" + msg.warning() + ']'); - } + U.warn(log, "Received EVT_NODE_FAILED event with warning [" + + "nodeInitiatedEvt=" + (creatorNode != null ? creatorNode : msg.creatorNodeId()) + + ", msg=" + msg.warning() + ']'); + } - notifyDiscovery(EVT_NODE_FAILED, msg.topologyVersion(), node, top); + notifyDiscovery(EVT_NODE_FAILED, msg.topologyVersion(), node, top); - spi.stats.onNodeFailed(); + spi.stats.onNodeFailed(); + } + } + else { + if (log.isDebugEnabled()) + log.debug("Ignore topology message, local node not added to topology: " + msg); } } http://git-wip-us.apache.org/repos/asf/ignite/blob/9ed39096/modules/core/src/test/java/org/apache/ignite/internal/IgniteClientReconnectCacheTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/IgniteClientReconnectCacheTest.java b/modules/core/src/test/java/org/apache/ignite/internal/IgniteClientReconnectCacheTest.java index 170d8ae..ed38d2b 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/IgniteClientReconnectCacheTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/IgniteClientReconnectCacheTest.java @@ -1087,7 +1087,7 @@ public class IgniteClientReconnectCacheTest extends IgniteClientReconnectAbstrac clientMode = true; - final int CLIENTS = 2; + final int CLIENTS = 5; List clients = new ArrayList<>(); @@ -1102,12 +1102,14 @@ public class IgniteClientReconnectCacheTest extends IgniteClientReconnectAbstrac int nodes = SRV_CNT + CLIENTS; int srvNodes = SRV_CNT; - for (int iter = 0; iter < 3; iter++) { + for (int iter = 0; iter < 5; iter++) { log.info("Iteration: " + iter); reconnectClientNodes(log, clients, grid(0), null); - for (Ignite client : clients) { + final int expNodes = CLIENTS + srvNodes; + + for (final Ignite client : clients) { IgniteCache cache = client.cache(null); assertNotNull(cache); @@ -1116,6 +1118,14 @@ public class IgniteClientReconnectCacheTest extends IgniteClientReconnectAbstrac assertEquals(1, cache.get(client.name())); + GridTestUtils.waitForCondition(new GridAbsPredicate() { + @Override public boolean apply() { + ClusterGroup grp = client.cluster().forCacheNodes(null); + + return grp.nodes().size() == expNodes; + } + }, 5000); + ClusterGroup grp = client.cluster().forCacheNodes(null); assertEquals(CLIENTS + srvNodes, grp.nodes().size()); @@ -1126,7 +1136,15 @@ public class IgniteClientReconnectCacheTest extends IgniteClientReconnectAbstrac } for (int i = 0; i < nodes; i++) { - Ignite ignite = grid(i); + final Ignite ignite = grid(i); + + GridTestUtils.waitForCondition(new GridAbsPredicate() { + @Override public boolean apply() { + ClusterGroup grp = ignite.cluster().forCacheNodes(null); + + return grp.nodes().size() == expNodes; + } + }, 5000); ClusterGroup grp = ignite.cluster().forCacheNodes(null);