Updated Branches: refs/heads/trunk 998131635 -> 84e1ed4c6
Merge branch 'cassandra-1.1' into trunk Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/84e1ed4c Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/84e1ed4c Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/84e1ed4c Branch: refs/heads/trunk Commit: 84e1ed4c6171f3efe41f1596c1340e320ac8d710 Parents: 9981316 110f69c Author: Brandon Williams <brandonwilli...@apache.org> Authored: Fri Nov 2 08:15:27 2012 -0500 Committer: Brandon Williams <brandonwilli...@apache.org> Committed: Fri Nov 2 08:15:27 2012 -0500 ---------------------------------------------------------------------- src/java/org/apache/cassandra/gms/Gossiper.java | 1 + .../org/apache/cassandra/net/MessagingService.java | 12 ++++++++++++ .../apache/cassandra/service/StorageService.java | 4 +++- 3 files changed, 16 insertions(+), 1 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/84e1ed4c/src/java/org/apache/cassandra/gms/Gossiper.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/gms/Gossiper.java index 6c4bf43,813c4c6..e49a6b3 --- a/src/java/org/apache/cassandra/gms/Gossiper.java +++ b/src/java/org/apache/cassandra/gms/Gossiper.java @@@ -276,8 -314,9 +276,9 @@@ public class Gossiper implements IFailu unreachableEndpoints.remove(endpoint); // do not remove endpointState until the quarantine expires FailureDetector.instance.remove(endpoint); - versions.remove(endpoint); + MessagingService.instance().resetVersion(endpoint); quarantineEndpoint(endpoint); + MessagingService.instance().destroyConnectionPool(endpoint); if (logger.isDebugEnabled()) logger.debug("removing endpoint " + endpoint); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/84e1ed4c/src/java/org/apache/cassandra/net/MessagingService.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/net/MessagingService.java index 10de977,c8c2cc1..da894e7 --- a/src/java/org/apache/cassandra/net/MessagingService.java +++ b/src/java/org/apache/cassandra/net/MessagingService.java @@@ -464,13 -298,25 +464,25 @@@ public final class MessagingService imp } } + public void destroyConnectionPool(InetAddress to) + { + OutboundTcpConnectionPool cp = connectionManagers_.get(to); + if (to == null) + return; + cp.ackCon.closeSocket(); + cp.cmdCon.closeSocket(); + connectionManagers_.remove(to); + recentTimeoutsPerHost.remove(to.getHostAddress()); + timeoutsPerHost.remove(to.getHostAddress()); + } + public OutboundTcpConnectionPool getConnectionPool(InetAddress to) { - OutboundTcpConnectionPool cp = connectionManagers_.get(to); + OutboundTcpConnectionPool cp = connectionManagers.get(to); if (cp == null) { - connectionManagers_.putIfAbsent(to, new OutboundTcpConnectionPool(to)); - cp = connectionManagers_.get(to); + connectionManagers.putIfAbsent(to, new OutboundTcpConnectionPool(to)); + cp = connectionManagers.get(to); } return cp; } http://git-wip-us.apache.org/repos/asf/cassandra/blob/84e1ed4c/src/java/org/apache/cassandra/service/StorageService.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/service/StorageService.java index 88abadb,30da45c..6302507 --- a/src/java/org/apache/cassandra/service/StorageService.java +++ b/src/java/org/apache/cassandra/service/StorageService.java @@@ -1542,14 -1269,16 +1542,16 @@@ public class StorageService implements // find the endpoint coordinating this removal that we need to notify when we're done String[] coordinator = Gossiper.instance.getEndpointStateForEndpoint(endpoint).getApplicationState(ApplicationState.REMOVAL_COORDINATOR).value.split(VersionedValue.DELIMITER_STR, -1); - Token coordtoken = getPartitioner().getTokenFactory().fromString(coordinator[1]); + UUID hostId = UUID.fromString(coordinator[1]); // grab any data we are now responsible for and notify responsible node - restoreReplicaCount(endpoint, tokenMetadata_.getEndpoint(coordtoken)); + restoreReplicaCount(endpoint, tokenMetadata.getEndpointForHostId(hostId)); } - } // not a member, nothing to do + } + else // now that the gossiper has told us about this nonexistent member, notify the gossiper to remove it + Gossiper.instance.removeEndpoint(endpoint); } - private void excise(Token token, InetAddress endpoint) + private void excise(Collection<Token> tokens, InetAddress endpoint) { HintedHandOffManager.instance.deleteHintsForEndpoint(endpoint); Gossiper.instance.removeEndpoint(endpoint);