From 3fe9cfc232ea78ed6121ae2e618216c1d4b8550a Mon Sep 17 00:00:00 2001 From: Calle Wilund Date: Mon, 24 Oct 2016 08:33:19 +0000 Subject: [PATCH] EndpointSnitchInfo: Fix getRack/DC host handling I.e. our localhost might be (and probably is) different from scyllas "fb::broadcast", and if not, try to get numerical asap. --- .../cassandra/locator/EndpointSnitchInfo.java | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/apache/cassandra/locator/EndpointSnitchInfo.java b/src/main/java/org/apache/cassandra/locator/EndpointSnitchInfo.java index 6fb485d..8f5d2f0 100644 --- a/src/main/java/org/apache/cassandra/locator/EndpointSnitchInfo.java +++ b/src/main/java/org/apache/cassandra/locator/EndpointSnitchInfo.java @@ -17,6 +17,8 @@ */ package org.apache.cassandra.locator; +import static java.util.Collections.singletonMap; + import java.net.InetAddress; import java.net.UnknownHostException; import java.util.logging.Logger; @@ -49,11 +51,8 @@ public class EndpointSnitchInfo extends APIMBean implements EndpointSnitchInfoMB @Override public String getRack(String host) throws UnknownHostException { log("getRack(String host) throws UnknownHostException"); - MultivaluedMap queryParams = new MultivaluedHashMap(); - if (host == null) { - host = InetAddress.getLoopbackAddress().getHostAddress(); - } - queryParams.add("host", host); + MultivaluedMap queryParams = host != null ? new MultivaluedHashMap( + singletonMap("host", InetAddress.getByName(host).getHostAddress())) : null; return client.getStringValue("/snitch/rack", queryParams, 10000); } @@ -67,11 +66,8 @@ public class EndpointSnitchInfo extends APIMBean implements EndpointSnitchInfoMB @Override public String getDatacenter(String host) throws UnknownHostException { log(" getDatacenter(String host) throws UnknownHostException"); - MultivaluedMap queryParams = new MultivaluedHashMap(); - if (host == null) { - host = InetAddress.getLoopbackAddress().getHostAddress(); - } - queryParams.add("host", host); + MultivaluedMap queryParams = host != null ? new MultivaluedHashMap( + singletonMap("host", InetAddress.getByName(host).getHostAddress())) : null; return client.getStringValue("/snitch/datacenter", queryParams, 10000); }