Updated Branches: refs/heads/cassandra-1.0 2d8ef13cc -> b4eae7cd4
fix broadcastAddress and Ec2MultiRegionSnitch.reconnect patch by Vijay; reviewed by Brandon Williams for CASSANDRA-3835 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/b4eae7cd Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/b4eae7cd Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/b4eae7cd Branch: refs/heads/cassandra-1.0 Commit: b4eae7cd44c73d64af3f0f38149c1065aceb38ee Parents: 2d8ef13 Author: Vijay Parthasarathy <vijay2...@gmail.com> Authored: Wed Feb 1 19:21:20 2012 -0800 Committer: Vijay Parthasarathy <vijay2...@gmail.com> Committed: Wed Feb 1 19:21:20 2012 -0800 ---------------------------------------------------------------------- src/java/org/apache/cassandra/cli/CliClient.java | 10 +--------- src/java/org/apache/cassandra/db/SystemTable.java | 2 +- src/java/org/apache/cassandra/gms/Gossiper.java | 2 +- .../cassandra/net/OutboundTcpConnection.java | 5 +++++ .../cassandra/net/OutboundTcpConnectionPool.java | 6 ++++-- .../apache/cassandra/service/MigrationManager.java | 2 +- 6 files changed, 13 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/b4eae7cd/src/java/org/apache/cassandra/cli/CliClient.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cli/CliClient.java b/src/java/org/apache/cassandra/cli/CliClient.java index 61cc53e..6b1e637 100644 --- a/src/java/org/apache/cassandra/cli/CliClient.java +++ b/src/java/org/apache/cassandra/cli/CliClient.java @@ -1155,15 +1155,7 @@ public class CliClient { SimpleSnitch snitch = new SimpleSnitch(); Map<String, String> options = new HashMap<String, String>(); - - try - { - options.put(snitch.getDatacenter(InetAddress.getLocalHost()), "1"); - } - catch (UnknownHostException e) - { - throw new RuntimeException(e); - } + options.put(snitch.getDatacenter(FBUtilities.getBroadcastAddress()), "1"); ksDef.setStrategy_options(options); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/b4eae7cd/src/java/org/apache/cassandra/db/SystemTable.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/SystemTable.java b/src/java/org/apache/cassandra/db/SystemTable.java index c831382..7e13fc4 100644 --- a/src/java/org/apache/cassandra/db/SystemTable.java +++ b/src/java/org/apache/cassandra/db/SystemTable.java @@ -138,7 +138,7 @@ public class SystemTable */ public static synchronized void updateToken(InetAddress ep, Token token) { - if (ep == FBUtilities.getLocalAddress()) + if (ep == FBUtilities.getBroadcastAddress()) { removeToken(token); return; http://git-wip-us.apache.org/repos/asf/cassandra/blob/b4eae7cd/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 d1a5b8d..96576fb 100644 --- a/src/java/org/apache/cassandra/gms/Gossiper.java +++ b/src/java/org/apache/cassandra/gms/Gossiper.java @@ -1095,7 +1095,7 @@ public class Gossiper implements IFailureDetectionEventListener, GossiperMBean */ public void addSavedEndpoint(InetAddress ep) { - if (ep == FBUtilities.getLocalAddress()) + if (ep == FBUtilities.getBroadcastAddress()) { logger.debug("Attempt to add self as saved endpoint"); return; http://git-wip-us.apache.org/repos/asf/cassandra/blob/b4eae7cd/src/java/org/apache/cassandra/net/OutboundTcpConnection.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/net/OutboundTcpConnection.java b/src/java/org/apache/cassandra/net/OutboundTcpConnection.java index 17c2097..a597aab 100644 --- a/src/java/org/apache/cassandra/net/OutboundTcpConnection.java +++ b/src/java/org/apache/cassandra/net/OutboundTcpConnection.java @@ -78,6 +78,11 @@ public class OutboundTcpConnection extends Thread enqueue(CLOSE_SENTINEL, null); } + void softCloseSocket() + { + enqueue(CLOSE_SENTINEL, null); + } + public void run() { while (true) http://git-wip-us.apache.org/repos/asf/cassandra/blob/b4eae7cd/src/java/org/apache/cassandra/net/OutboundTcpConnectionPool.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/net/OutboundTcpConnectionPool.java b/src/java/org/apache/cassandra/net/OutboundTcpConnectionPool.java index c7acd9e..a75dafe 100644 --- a/src/java/org/apache/cassandra/net/OutboundTcpConnectionPool.java +++ b/src/java/org/apache/cassandra/net/OutboundTcpConnectionPool.java @@ -68,7 +68,8 @@ public class OutboundTcpConnectionPool public void reset(InetAddress remoteEP) { resetedEndpoint = remoteEP; - reset(); + for (OutboundTcpConnection con : new OutboundTcpConnection[] { cmdCon, ackCon }) + con.softCloseSocket(); } public Socket newSocket() throws IOException @@ -78,7 +79,8 @@ public class OutboundTcpConnectionPool { return SSLFactory.getSocket(DatabaseDescriptor.getEncryptionOptions(), endPoint(), DatabaseDescriptor.getSSLStoragePort(), FBUtilities.getLocalAddress(), 0); } - else { + else + { return new Socket(endPoint(), DatabaseDescriptor.getStoragePort(), FBUtilities.getLocalAddress(), 0); } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/b4eae7cd/src/java/org/apache/cassandra/service/MigrationManager.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/service/MigrationManager.java b/src/java/org/apache/cassandra/service/MigrationManager.java index 4f6a5a7..cf0cbcd 100644 --- a/src/java/org/apache/cassandra/service/MigrationManager.java +++ b/src/java/org/apache/cassandra/service/MigrationManager.java @@ -54,7 +54,7 @@ public class MigrationManager implements IEndpointStateChangeSubscriber // avoids re-pushing migrations that we're waiting on target to apply already private static Map<InetAddress,UUID> lastPushed = new MapMaker().expiration(1, TimeUnit.MINUTES).makeMap(); - private static UUID highestKnown; + private static volatile UUID highestKnown; public void onJoin(InetAddress endpoint, EndpointState epState) { VersionedValue value = epState.getApplicationState(ApplicationState.SCHEMA);