Repository: cassandra Updated Branches: refs/heads/trunk 2f044b0f7 -> 262f1673d
Add local address entry in PropertyFileSnitch Patch by Branimir Lambov; reviewed by Carl Yeksigian for CASSANDRA-11332 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/262f1673 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/262f1673 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/262f1673 Branch: refs/heads/trunk Commit: 262f1673d7b62e7578c14b9399e32285cd14aee9 Parents: 2f044b0 Author: blambov <[email protected]> Authored: Thu Sep 1 14:30:05 2016 -0400 Committer: Carl Yeksigian <[email protected]> Committed: Thu Sep 1 14:30:39 2016 -0400 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../org/apache/cassandra/locator/PropertyFileSnitch.java | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/262f1673/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index f567892..af4bda5 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.10 + * Add local address entry in PropertyFileSnitch (CASSANDRA-11332) * Cleanup uses of AlterTableStatementColumn (CASSANDRA-12567) * Add keep-alive to streaming (CASSANDRA-11841) * Tracing payload is passed through newSession(..) (CASSANDRA-11706) http://git-wip-us.apache.org/repos/asf/cassandra/blob/262f1673/src/java/org/apache/cassandra/locator/PropertyFileSnitch.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/locator/PropertyFileSnitch.java b/src/java/org/apache/cassandra/locator/PropertyFileSnitch.java index bfd8e8e..8cc6549 100644 --- a/src/java/org/apache/cassandra/locator/PropertyFileSnitch.java +++ b/src/java/org/apache/cassandra/locator/PropertyFileSnitch.java @@ -186,10 +186,17 @@ public class PropertyFileSnitch extends AbstractNetworkTopologySnitch reloadedMap.put(host, token); } } - if (reloadedDefaultDCRack == null && !reloadedMap.containsKey(FBUtilities.getBroadcastAddress())) + InetAddress broadcastAddress = FBUtilities.getBroadcastAddress(); + String[] localInfo = reloadedMap.get(broadcastAddress); + if (reloadedDefaultDCRack == null && localInfo == null) throw new ConfigurationException(String.format("Snitch definitions at %s do not define a location for " + "this node's broadcast address %s, nor does it provides a default", - SNITCH_PROPERTIES_FILENAME, FBUtilities.getBroadcastAddress())); + SNITCH_PROPERTIES_FILENAME, broadcastAddress)); + // OutboundTcpConnectionPool.getEndpoint() converts our broadcast address to local, + // make sure we can be found at that as well. + InetAddress localAddress = FBUtilities.getLocalAddress(); + if (!localAddress.equals(broadcastAddress) && !reloadedMap.containsKey(localAddress)) + reloadedMap.put(localAddress, localInfo); if (isUpdate && !livenessCheck(reloadedMap, reloadedDefaultDCRack)) return;
