Don't initiate snitch reconnection for dead states

Patch by brandonwilliams, reviewed by John Alberts for CASSANDRA-7292


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

Branch: refs/heads/trunk
Commit: a925262395f1e735ada0ba35c8e41042be1807fb
Parents: b4fae85
Author: Brandon Williams <brandonwilli...@apache.org>
Authored: Fri Apr 17 17:36:55 2015 -0500
Committer: Brandon Williams <brandonwilli...@apache.org>
Committed: Fri Apr 17 17:38:44 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                                 | 1 +
 .../apache/cassandra/locator/ReconnectableSnitchHelper.java | 9 +++------
 2 files changed, 4 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/a9252623/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 80ab11c..2777d79 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -81,6 +81,7 @@
  * Use stdout for progress and stats in sstableloader (CASSANDRA-8982)
  * Correctly identify 2i datadir from older versions (CASSANDRA-9116)
 Merged from 2.0:
+ * Don't initiate snitch reconnection for dead states (CASSANDRA-7292)
  * Fix ArrayIndexOutOfBoundsException in CQLSSTableWriter (CASSANDRA-8978)
  * Add shutdown gossip state to prevent timeouts during rolling restarts 
(CASSANDRA-8336)
  * Fix running with java.net.preferIPv6Addresses=true (CASSANDRA-9137)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/a9252623/src/java/org/apache/cassandra/locator/ReconnectableSnitchHelper.java
----------------------------------------------------------------------
diff --git 
a/src/java/org/apache/cassandra/locator/ReconnectableSnitchHelper.java 
b/src/java/org/apache/cassandra/locator/ReconnectableSnitchHelper.java
index d797393..1642561 100644
--- a/src/java/org/apache/cassandra/locator/ReconnectableSnitchHelper.java
+++ b/src/java/org/apache/cassandra/locator/ReconnectableSnitchHelper.java
@@ -21,10 +21,7 @@ package org.apache.cassandra.locator;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 
-import org.apache.cassandra.gms.ApplicationState;
-import org.apache.cassandra.gms.EndpointState;
-import org.apache.cassandra.gms.IEndpointStateChangeSubscriber;
-import org.apache.cassandra.gms.VersionedValue;
+import org.apache.cassandra.gms.*;
 import org.apache.cassandra.net.MessagingService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -78,13 +75,13 @@ public class ReconnectableSnitchHelper implements 
IEndpointStateChangeSubscriber
 
     public void onJoin(InetAddress endpoint, EndpointState epState)
     {
-        if (preferLocal && 
epState.getApplicationState(ApplicationState.INTERNAL_IP) != null)
+        if (preferLocal && !Gossiper.instance.isDeadState(epState) && 
epState.getApplicationState(ApplicationState.INTERNAL_IP) != null)
             reconnect(endpoint, 
epState.getApplicationState(ApplicationState.INTERNAL_IP));
     }
 
     public void onChange(InetAddress endpoint, ApplicationState state, 
VersionedValue value)
     {
-        if (preferLocal && state == ApplicationState.INTERNAL_IP)
+        if (preferLocal && !Gossiper.instance.isDeadState(epState) && state == 
ApplicationState.INTERNAL_IP)
             reconnect(endpoint, value);
     }
 

Reply via email to