Repository: cassandra Updated Branches: refs/heads/trunk 46d076185 -> 053c17d88
status output is confused when hostname resolution is enabled patch by Vijay; reviewed by Brandon Williams for CASSANDRA-6896 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/b7bb2fb2 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/b7bb2fb2 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/b7bb2fb2 Branch: refs/heads/trunk Commit: b7bb2fb20351e0b86085cdf5cb48450cfa837872 Parents: 26b8f4a Author: Vijay <[email protected]> Authored: Sat Mar 22 17:50:30 2014 -0700 Committer: Vijay <[email protected]> Committed: Sat Mar 22 17:50:30 2014 -0700 ---------------------------------------------------------------------- .../org/apache/cassandra/tools/NodeCmd.java | 35 ++++++++++---------- 1 file changed, 18 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/b7bb2fb2/src/java/org/apache/cassandra/tools/NodeCmd.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/tools/NodeCmd.java b/src/java/org/apache/cassandra/tools/NodeCmd.java index ba7144f..6c02877 100644 --- a/src/java/org/apache/cassandra/tools/NodeCmd.java +++ b/src/java/org/apache/cassandra/tools/NodeCmd.java @@ -304,7 +304,7 @@ public class NodeCmd for (HostStat stat : hoststats) { - tokens.addAll(endpointsToTokens.get(stat.ip)); + tokens.addAll(endpointsToTokens.get(stat.endpoint.getHostAddress())); lastToken = tokens.get(tokens.size() - 1); if (stat.owns != null) totalReplicas += stat.owns; @@ -322,7 +322,7 @@ public class NodeCmd for (HostStat stat : hoststats) { - String endpoint = stat.ip; + String endpoint = stat.endpoint.getHostAddress(); String rack; try { @@ -411,7 +411,7 @@ public class NodeCmd return format; } - private void printNode(String endpoint, Float owns, List<String> tokens, boolean hasEffectiveOwns, boolean isTokenPerNode) throws UnknownHostException + private void printNode(String endpoint, Float owns, List<HostStat> tokens, boolean hasEffectiveOwns, boolean isTokenPerNode) throws UnknownHostException { String status, state, load, strOwns, hostID, rack, fmt; fmt = getFormat(hasEffectiveOwns, isTokenPerNode); @@ -428,13 +428,14 @@ public class NodeCmd hostID = hostIDMap.get(endpoint); rack = epSnitchInfo.getRack(endpoint); + String endpointDns = tokens.get(0).ipOrDns(); if (isTokenPerNode) { - outs.printf(fmt, status, state, endpoint, load, strOwns, hostID, tokens.get(0), rack); + outs.printf(fmt, status, state, endpointDns, load, strOwns, hostID, tokens.get(0).token, rack); } else { - outs.printf(fmt, status, state, endpoint, load, tokens.size(), strOwns, hostID, rack); + outs.printf(fmt, status, state, endpointDns, load, tokens.size(), strOwns, hostID, rack); } } @@ -494,16 +495,16 @@ public class NodeCmd printStatusLegend(); printNodesHeader(hasEffectiveOwns, isTokenPerNode); - ArrayListMultimap<String, String> hostToTokens = ArrayListMultimap.create(); + ArrayListMultimap<InetAddress, HostStat> hostToTokens = ArrayListMultimap.create(); for (HostStat stat : dc.getValue()) - hostToTokens.put(stat.ipOrDns(), stat.token); + hostToTokens.put(stat.endpoint, stat); // Nodes - for (String endpoint : hostToTokens.keySet()) + for (InetAddress endpoint : hostToTokens.keySet()) { - Float owns = ownerships.get(InetAddress.getByName(endpoint)); - List<String> tokens = hostToTokens.get(endpoint); - printNode(endpoint, owns, tokens, hasEffectiveOwns, isTokenPerNode); + Float owns = ownerships.get(endpoint); + List<HostStat> tokens = hostToTokens.get(endpoint); + printNode(endpoint.getHostAddress(), owns, tokens, hasEffectiveOwns, isTokenPerNode); } } } @@ -553,22 +554,22 @@ public class NodeCmd } static class HostStat { - public final String ip; - public final String dns; + public final InetAddress endpoint; + public final boolean resolveIp; public final Float owns; public final String token; - public HostStat(String token, InetAddress endPoint, boolean resolveIp, Float owns) + public HostStat(String token, InetAddress endpoint, boolean resolveIp, Float owns) { this.token = token; - this.ip = endPoint.getHostAddress(); - this.dns = resolveIp ? endPoint.getHostName() : null; + this.endpoint = endpoint; + this.resolveIp = resolveIp; this.owns = owns; } public String ipOrDns() { - return (dns != null) ? dns : ip; + return (resolveIp) ? endpoint.getHostName() : endpoint.getHostAddress(); } }
