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()); + } } }