You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by br...@apache.org on 2014/06/09 21:28:59 UTC

[03/10] git commit: Check all INTERNAL_IP states for seed match.

Check all INTERNAL_IP states for seed match.

Patch by Brandon Williams, reviewed by Jason Brown for CASSANDRA-6523


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

Branch: refs/heads/cassandra-2.1
Commit: 47edb3c061bf269ab79ae5a782197cc3040dad89
Parents: ce98b2d
Author: Brandon Williams <br...@apache.org>
Authored: Mon Jun 9 14:04:35 2014 -0500
Committer: Brandon Williams <br...@apache.org>
Committed: Mon Jun 9 14:04:35 2014 -0500

----------------------------------------------------------------------
 CHANGES.txt                                     |  1 +
 .../gms/GossipDigestAckVerbHandler.java         |  1 -
 .../gms/GossipDigestSynVerbHandler.java         |  1 -
 src/java/org/apache/cassandra/gms/Gossiper.java | 25 ++++++++++++--------
 4 files changed, 16 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/47edb3c0/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 11ded69..a50825f 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 1.2.17
+ * Check internal addresses for seeds (CASSANDRA-6523)
  * Fix potential / by 0 in HHOM page size calculation (CASSANDRA-7354)
  * Fix handling of empty counter replication mutations (CASSANDRA-7144)
  * Use LOCAL_ONE for non-superuser auth queries (CASSANDRA-7328)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/47edb3c0/src/java/org/apache/cassandra/gms/GossipDigestAckVerbHandler.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/gms/GossipDigestAckVerbHandler.java b/src/java/org/apache/cassandra/gms/GossipDigestAckVerbHandler.java
index b2af3a2..ebfdd7e 100644
--- a/src/java/org/apache/cassandra/gms/GossipDigestAckVerbHandler.java
+++ b/src/java/org/apache/cassandra/gms/GossipDigestAckVerbHandler.java
@@ -58,7 +58,6 @@ public class GossipDigestAckVerbHandler implements IVerbHandler<GossipDigestAck>
             Gossiper.instance.applyStateLocally(epStateMap);
         }
 
-        Gossiper.instance.checkSeedContact(from);
         if (Gossiper.instance.isInShadowRound())
         {
             if (logger.isDebugEnabled())

http://git-wip-us.apache.org/repos/asf/cassandra/blob/47edb3c0/src/java/org/apache/cassandra/gms/GossipDigestSynVerbHandler.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/gms/GossipDigestSynVerbHandler.java b/src/java/org/apache/cassandra/gms/GossipDigestSynVerbHandler.java
index 476cb72..f6de521 100644
--- a/src/java/org/apache/cassandra/gms/GossipDigestSynVerbHandler.java
+++ b/src/java/org/apache/cassandra/gms/GossipDigestSynVerbHandler.java
@@ -82,7 +82,6 @@ public class GossipDigestSynVerbHandler implements IVerbHandler<GossipDigestSyn>
                                                                                                       GossipDigestAck.serializer);
         if (logger.isTraceEnabled())
             logger.trace("Sending a GossipDigestAckMessage to {}", from);
-        Gossiper.instance.checkSeedContact(from);
         MessagingService.instance().sendOneWay(gDigestAckMessage, from);
     }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/47edb3c0/src/java/org/apache/cassandra/gms/Gossiper.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/gms/Gossiper.java b/src/java/org/apache/cassandra/gms/Gossiper.java
index 5d2780e..caadb3e 100644
--- a/src/java/org/apache/cassandra/gms/Gossiper.java
+++ b/src/java/org/apache/cassandra/gms/Gossiper.java
@@ -104,9 +104,6 @@ public class Gossiper implements IFailureDetectionEventListener, GossiperMBean
 
     private final Map<InetAddress, Long> expireTimeEndpointMap = new ConcurrentHashMap<InetAddress, Long>();
 
-    // have we ever in our lifetime reached a seed?
-    private boolean seedContacted = false;
-
     private boolean inShadowRound = false;
 
     private class GossipTask implements Runnable
@@ -189,15 +186,23 @@ public class Gossiper implements IFailureDetectionEventListener, GossiperMBean
         }
     }
 
-    protected void checkSeedContact(InetAddress ep)
-    {
-        if (!seedContacted && seeds.contains(ep))
-            seedContacted = true;
-    }
-
     public boolean seenAnySeed()
     {
-        return seedContacted;
+        for (Map.Entry<InetAddress, EndpointState> entry : endpointStateMap.entrySet())
+        {
+            if (seeds.contains(entry.getKey()))
+                return true;
+            try
+            {
+                if (entry.getValue().getApplicationStateMap().keySet().contains(ApplicationState.INTERNAL_IP) && seeds.contains(InetAddress.getByName(entry.getValue().getApplicationState(ApplicationState.INTERNAL_IP).value)))
+                    return true;
+            }
+            catch (UnknownHostException e)
+            {
+                throw new RuntimeException(e);
+            }
+        }
+        return false;
     }
 
     /**