Author: brandonwilliams
Date: Fri Dec  9 20:56:08 2011
New Revision: 1212624

URL: http://svn.apache.org/viewvc?rev=1212624&view=rev
Log:
Prevent gossiper from adding itself to saved endpoints.
Patch by brandonwilliams reviewed by Paul Cannon for CASSANDRA-3485.

Modified:
    
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/SystemTable.java
    
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/gms/Gossiper.java
    
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/service/StorageService.java

Modified: 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/SystemTable.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/SystemTable.java?rev=1212624&r1=1212623&r2=1212624&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/SystemTable.java
 (original)
+++ 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/SystemTable.java
 Fri Dec  9 20:56:08 2011
@@ -100,6 +100,8 @@ public class SystemTable
      */
     public static synchronized void updateToken(InetAddress ep, Token token)
     {
+        if (ep == FBUtilities.getBroadcastAddress())
+            return;
         IPartitioner p = StorageService.getPartitioner();
         ColumnFamily cf = ColumnFamily.create(Table.SYSTEM_TABLE, STATUS_CF);
         cf.addColumn(new Column(p.getTokenFactory().toByteArray(token), 
ByteBuffer.wrap(ep.getAddress()), System.currentTimeMillis()));

Modified: 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/gms/Gossiper.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/gms/Gossiper.java?rev=1212624&r1=1212623&r2=1212624&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/gms/Gossiper.java
 (original)
+++ 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/gms/Gossiper.java
 Fri Dec  9 20:56:08 2011
@@ -995,6 +995,11 @@ public class Gossiper implements IFailur
      */
     public void addSavedEndpoint(InetAddress ep)
     {
+        if (ep == FBUtilities.getBroadcastAddress())
+        {
+            logger.debug("Attempt to add self as saved endpoint");
+            return;
+        }
         EndpointState epState = new EndpointState(new HeartBeatState(0));
         epState.markDead();
         epState.setHasToken(true);

Modified: 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/service/StorageService.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/service/StorageService.java?rev=1212624&r1=1212623&r2=1212624&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/service/StorageService.java
 (original)
+++ 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/service/StorageService.java
 Fri Dec  9 20:56:08 2011
@@ -387,8 +387,16 @@ public class StorageService implements I
             logger_.info("Loading persisted ring state");
             for (Map.Entry<Token, InetAddress> entry : 
SystemTable.loadTokens().entrySet())
             {
-                tokenMetadata_.updateNormalToken(entry.getKey(), 
entry.getValue());
-                Gossiper.instance.addSavedEndpoint(entry.getValue());
+                if (entry.getValue() == FBUtilities.getBroadcastAddress())
+                {
+                    // entry has been mistakenly added, delete it
+                    SystemTable.removeToken(entry.getKey());
+                }
+                else
+                {
+                    tokenMetadata_.updateNormalToken(entry.getKey(), 
entry.getValue());
+                    Gossiper.instance.addSavedEndpoint(entry.getValue());
+                }
             }
         }
 


Reply via email to