Updated Branches: refs/heads/trunk 7bb6f012b -> 8df9d1f4c
Avoid over-reconnecting in EC2MRS patch by jasobrown; reviewed by jbellis for CASSADNRA-5678 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/998fe967 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/998fe967 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/998fe967 Branch: refs/heads/trunk Commit: 998fe96766a8c826ab0483e657885eb10a9293ae Parents: b4dca44 Author: Jason Brown <jasedbr...@gmail.com> Authored: Thu Jun 20 12:43:46 2013 -0700 Committer: Jason Brown <jasedbr...@gmail.com> Committed: Thu Jun 20 13:40:49 2013 -0700 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../cassandra/locator/Ec2MultiRegionSnitch.java | 21 ++++++++++---------- .../net/OutboundTcpConnectionPool.java | 2 +- 3 files changed, 13 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/998fe967/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 6d9c910..3847d6a 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -32,6 +32,7 @@ * Never allow partition key ranges in CQL3 without token() (CASSANDRA-5666) * Gossiper incorrectly drops AppState for an upgrading node (CASSANDRA-5660) * Connection thrashing during multi-region ec2 during upgrade, due to messaging version (CASSANDRA-5669) + * Avoid over reconnecting in EC2MRS (CASSANDRA-5678) Merged from 1.1: * Remove buggy thrift max message length option (CASSANDRA-5529) * Fix NPE in Pig's widerow mode (CASSANDRA-5488) http://git-wip-us.apache.org/repos/asf/cassandra/blob/998fe967/src/java/org/apache/cassandra/locator/Ec2MultiRegionSnitch.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/locator/Ec2MultiRegionSnitch.java b/src/java/org/apache/cassandra/locator/Ec2MultiRegionSnitch.java index 12ebfbb..ea41bc0 100644 --- a/src/java/org/apache/cassandra/locator/Ec2MultiRegionSnitch.java +++ b/src/java/org/apache/cassandra/locator/Ec2MultiRegionSnitch.java @@ -97,20 +97,21 @@ public class Ec2MultiRegionSnitch extends Ec2Snitch implements IEndpointStateCha private void reConnect(InetAddress endpoint, VersionedValue versionedValue) { - if (getDatacenter(endpoint).equals(getDatacenter(public_ip)) - && MessagingService.instance().getVersion(endpoint) == MessagingService.current_version) + try { - try + InetAddress localEc2IP = InetAddress.getByName(versionedValue.value); + if (getDatacenter(endpoint).equals(getDatacenter(public_ip)) + && MessagingService.instance().getVersion(endpoint) == MessagingService.current_version + && !MessagingService.instance().getConnectionPool(endpoint).endPoint().equals(localEc2IP)) { - InetAddress remoteIP = InetAddress.getByName(versionedValue.value); - MessagingService.instance().getConnectionPool(endpoint).reset(remoteIP); - logger.debug(String.format("Intiated reconnect to an Internal IP %s for the %s", remoteIP, endpoint)); - } - catch (UnknownHostException e) - { - logger.error("Error in getting the IP address resolved: ", e); + MessagingService.instance().getConnectionPool(endpoint).reset(localEc2IP); + logger.debug(String.format("Intiated reconnect to an Internal IP %s for the %s", localEc2IP, endpoint)); } } + catch (UnknownHostException e) + { + logger.error("Error in getting the IP address resolved: ", e); + } } @Override http://git-wip-us.apache.org/repos/asf/cassandra/blob/998fe967/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 1bc1893..86476b1 100644 --- a/src/java/org/apache/cassandra/net/OutboundTcpConnectionPool.java +++ b/src/java/org/apache/cassandra/net/OutboundTcpConnectionPool.java @@ -130,7 +130,7 @@ public class OutboundTcpConnectionPool } } - InetAddress endPoint() + public InetAddress endPoint() { if (id.equals(FBUtilities.getBroadcastAddress())) return FBUtilities.getLocalAddress();