# IGNITE-709 Fix problem in 
TcpDiscoverySpi.RingMessageWorker#processClientReconnectMessage()


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/eda676b5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/eda676b5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/eda676b5

Branch: refs/heads/ignite-709
Commit: eda676b543d80319105e8e75cf1cf34e65ac8c81
Parents: 49a1c7e
Author: sevdokimov <sergey.evdoki...@jetbrains.com>
Authored: Sun Apr 19 19:11:14 2015 +0300
Committer: sevdokimov <sergey.evdoki...@jetbrains.com>
Committed: Sun Apr 19 19:11:14 2015 +0300

----------------------------------------------------------------------
 .../spi/discovery/tcp/TcpDiscoverySpi.java      | 76 +++++++++++---------
 1 file changed, 41 insertions(+), 35 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/eda676b5/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
index 5245826..d69ca0c 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
@@ -3408,54 +3408,60 @@ public class TcpDiscoverySpi extends 
TcpDiscoverySpiAdapter implements TcpDiscov
                 assert isLocNodeRouter;
 
                 msg.verify(locNodeId);
+
+                if (ring.hasRemoteNodes()) {
+                    sendMessageAcrossRing(msg);
+
+                    return;
+                }
             }
-            else {
-                UUID nodeId = msg.creatorNodeId();
 
-                TcpDiscoveryNode node = ring.node(nodeId);
+            UUID nodeId = msg.creatorNodeId();
 
-                assert node == null || node.isClient();
+            TcpDiscoveryNode node = ring.node(nodeId);
 
-                if (node != null) {
-                    assert node.isClient();
+            assert node == null || node.isClient();
 
-                    node.clientRouterNodeId(msg.routerNodeId());
-                    node.aliveCheck(maxMissedClientHbs);
+            if (node != null) {
+                assert node.isClient();
 
-                    if (isLocalNodeCoordinator()) {
-                        Collection<TcpDiscoveryAbstractMessage> pending =
-                            pendingMsgs.messages(msg.lastMessageId());
+                node.clientRouterNodeId(msg.routerNodeId());
+                node.aliveCheck(maxMissedClientHbs);
 
-                        if (pending != null) {
-                            msg.pendingMessages(pending);
-                            msg.success(true);
-                        }
-                        else {
-                            if (log.isDebugEnabled())
-                                log.debug("Failing reconnecting client node 
because failed to restore pending " +
-                                    "messages [locNodeId=" + locNodeId + ", 
clientNodeId=" + nodeId + ']');
+                if (isLocalNodeCoordinator()) {
+                    Collection<TcpDiscoveryAbstractMessage> pending =
+                        pendingMsgs.messages(msg.lastMessageId());
 
-                            processNodeFailedMessage(new 
TcpDiscoveryNodeFailedMessage(locNodeId,
-                                node.id(), node.internalOrder()));
-                        }
+                    if (pending != null) {
+                        msg.pendingMessages(pending);
+                        msg.success(true);
                     }
-                }
-                else if (log.isDebugEnabled())
-                    log.debug("Reconnecting client node is already failed 
[nodeId=" + nodeId + ']');
-
-                if (isLocNodeRouter) {
-                    ClientMessageWorker wrk = clientMsgWorkers.get(nodeId);
+                    else {
+                        if (log.isDebugEnabled())
+                            log.debug("Failing reconnecting client node 
because failed to restore pending " +
+                                "messages [locNodeId=" + locNodeId + ", 
clientNodeId=" + nodeId + ']');
 
-                    if (wrk != null)
-                        wrk.addMessage(msg);
-                    else if (log.isDebugEnabled())
-                        log.debug("Failed to reconnect client node 
(disconnected during the process) [locNodeId=" +
-                            locNodeId + ", clientNodeId=" + nodeId + ']');
+                        processNodeFailedMessage(new 
TcpDiscoveryNodeFailedMessage(locNodeId,
+                            node.id(), node.internalOrder()));
+                    }
                 }
             }
+            else if (log.isDebugEnabled())
+                log.debug("Reconnecting client node is already failed 
[nodeId=" + nodeId + ']');
 
-            if (ring.hasRemoteNodes())
-                sendMessageAcrossRing(msg);
+            if (isLocNodeRouter) {
+                ClientMessageWorker wrk = clientMsgWorkers.get(nodeId);
+
+                if (wrk != null)
+                    wrk.addMessage(msg);
+                else if (log.isDebugEnabled())
+                    log.debug("Failed to reconnect client node (disconnected 
during the process) [locNodeId=" +
+                        locNodeId + ", clientNodeId=" + nodeId + ']');
+            }
+            else {
+                if (ring.hasRemoteNodes())
+                    sendMessageAcrossRing(msg);
+            }
         }
 
         /**

Reply via email to