You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2015/07/23 12:14:29 UTC
incubator-ignite git commit: ignite-752: improved failure detection,
fixed comments
Repository: incubator-ignite
Updated Branches:
refs/heads/ignite-752 10a3ef34a -> f714fd0a0
ignite-752: improved failure detection, fixed comments
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/f714fd0a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/f714fd0a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/f714fd0a
Branch: refs/heads/ignite-752
Commit: f714fd0a0320fcb4cb51c5baba9344f7f86cf75a
Parents: 10a3ef3
Author: Denis Magda <dm...@gridgain.com>
Authored: Thu Jul 23 13:14:24 2015 +0300
Committer: Denis Magda <dm...@gridgain.com>
Committed: Thu Jul 23 13:14:24 2015 +0300
----------------------------------------------------------------------
.../configuration/IgniteConfiguration.java | 7 ++-
.../ignite/spi/discovery/tcp/ServerImpl.java | 49 ++++++--------------
2 files changed, 18 insertions(+), 38 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f714fd0a/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
index 084d22c..f4fc4ec 100644
--- a/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
@@ -1676,8 +1676,11 @@ public class IgniteConfiguration {
/**
* Sets failure detection threshold to use in {@link TcpDiscoverySpi} and {@link TcpCommunicationSpi}.
* <p>
- * The threshold helps to detect failed nodes in a cluster topology quickly and keep working only with the nodes
- * that are alive.
+ * If the threshold is set for a server node then it helps to detect failed nodes in a cluster topology during the
+ * time that is equal to threshold's value and keep working only with the nodes that are alive.
+ * <p>
+ * If it's set for a client node then the client node will be able to detect a disconnection from it's router node
+ * during the time equal to threshold's value.
* <p>
* The failure detection threshold is an easy and straightforward way to setup {@link TcpDiscoverySpi} and
* {@link TcpCommunicationSpi} depending on network conditions of a cluster. On the other hand if advanced setting
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f714fd0a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java
index b085b3d..99a3ee2 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java
@@ -1828,9 +1828,6 @@ class ServerImpl extends TcpDiscoveryImpl {
if (msg instanceof TcpDiscoveryJoinRequestMessage)
processJoinRequestMessage((TcpDiscoveryJoinRequestMessage)msg);
- else if (msg instanceof TcpDiscoveryConnectionCheckMessage)
- processConnectionCheckMessage((TcpDiscoveryConnectionCheckMessage)msg);
-
else if (msg instanceof TcpDiscoveryClientReconnectMessage)
processClientReconnectMessage((TcpDiscoveryClientReconnectMessage)msg);
@@ -2210,7 +2207,15 @@ class ServerImpl extends TcpDiscoveryImpl {
}
}
- prepareNodeAddedMessage(msg, next.id(), pendingMsgs.msgs, pendingMsgs.discardId);
+ if (msg instanceof TcpDiscoveryConnectionCheckMessage) {
+ if (!next.version().greaterThanEqual(TcpDiscoverySpi.FAILURE_DETECTION_MAJOR_VER,
+ TcpDiscoverySpi.FAILURE_DETECTION_MINOR_VER,
+ TcpDiscoverySpi.FAILURE_DETECTION_MAINT_VER))
+ // Preserve backward compatibility with nodes of older versions.
+ msg = new TcpDiscoveryStatusCheckMessage(locNode, null);
+ }
+ else
+ prepareNodeAddedMessage(msg, next.id(), pendingMsgs.msgs, pendingMsgs.discardId);
try {
long tstamp = U.currentTimeMillis();
@@ -3794,37 +3799,6 @@ class ServerImpl extends TcpDiscoveryImpl {
}
/**
- * Processes connection check message.
- *
- * @param msg Connection check message.
- */
- private void processConnectionCheckMessage(TcpDiscoveryConnectionCheckMessage msg) {
- assert msg.creatorNodeId().equals(getLocalNodeId()) && msg.senderNodeId() == null;
-
- if (spiStateCopy() != CONNECTED) {
- if (log.isDebugEnabled())
- log.debug("Connection check message discarded (local node is leaving topology).");
-
- return;
- }
-
- if (next == null) {
- if (log.isDebugEnabled())
- log.debug("Connection check message discarded (no next node in topology).");
-
- return;
- }
-
- // Link to the 'next' node is updated only inside RingMessageWorker thread, no need to check on 'null'.
- if (!next.version().greaterThanEqual(TcpDiscoverySpi.FAILURE_DETECTION_MAJOR_VER,
- TcpDiscoverySpi.FAILURE_DETECTION_MINOR_VER, TcpDiscoverySpi.FAILURE_DETECTION_MAINT_VER)) {
- // Preserve backward compatibility with nodes of older versions.
- processStatusCheckMessage(new TcpDiscoveryStatusCheckMessage(locNode, null));
- } else if (ring.hasRemoteNodes())
- sendMessageAcrossRing(msg);
- }
-
- /**
* @param nodeId Node ID.
* @param metrics Metrics.
* @param cacheMetrics Cache metrics.
@@ -4081,6 +4055,9 @@ class ServerImpl extends TcpDiscoveryImpl {
", connCheckFreq=" + connCheckFreq + ']');
failureThresholdReached = true;
+
+ // Reset sent time deliberately to force sending connection check message.
+ lastTimeConnCheckMsgSent = 0;
}
long elapsed = (lastTimeConnCheckMsgSent + connCheckFreq) - U.currentTimeMillis();
@@ -4089,7 +4066,7 @@ class ServerImpl extends TcpDiscoveryImpl {
return;
if (ring.hasRemoteNodes()) {
- processConnectionCheckMessage(new TcpDiscoveryConnectionCheckMessage(locNode));
+ sendMessageAcrossRing(new TcpDiscoveryConnectionCheckMessage(locNode));
lastTimeConnCheckMsgSent = U.currentTimeMillis();
}