Merge branch 'cassandra-1.2' into cassandra-2.0

Conflicts:
        src/java/org/apache/cassandra/tools/NodeCmd.java


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/fc9cad90
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/fc9cad90
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/fc9cad90

Branch: refs/heads/cassandra-2.1
Commit: fc9cad90d532a3af89dbbf1b004bfd333a85b33e
Parents: f7eca98 91d220b
Author: Vijay <vijay2...@gmail.com>
Authored: Tue Mar 11 20:32:07 2014 -0700
Committer: Vijay <vijay2...@gmail.com>
Committed: Tue Mar 11 20:32:07 2014 -0700

----------------------------------------------------------------------
 .../org/apache/cassandra/tools/NodeCmd.java     | 194 +++++++++----------
 1 file changed, 93 insertions(+), 101 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/fc9cad90/src/java/org/apache/cassandra/tools/NodeCmd.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/tools/NodeCmd.java
index 89cfb94,85afdc1..0e7ff2a
--- a/src/java/org/apache/cassandra/tools/NodeCmd.java
+++ b/src/java/org/apache/cassandra/tools/NodeCmd.java
@@@ -27,22 -27,25 +27,23 @@@ import java.text.SimpleDateFormat
  import java.util.*;
  import java.util.Map.Entry;
  import java.util.concurrent.ExecutionException;
 +import javax.management.openmbean.TabularData;
  
  import com.google.common.base.Joiner;
+ import com.google.common.collect.ArrayListMultimap;
  import com.google.common.collect.LinkedHashMultimap;
  import com.google.common.collect.Maps;
+ 
  import org.apache.cassandra.config.DatabaseDescriptor;
  import org.apache.cassandra.utils.FBUtilities;
  import org.apache.commons.cli.*;
 -import org.yaml.snakeyaml.Loader;
 -import org.yaml.snakeyaml.TypeDescription;
  import org.yaml.snakeyaml.Yaml;
  import org.yaml.snakeyaml.constructor.Constructor;
- 
  import org.apache.cassandra.concurrent.JMXEnabledThreadPoolExecutorMBean;
  import org.apache.cassandra.db.ColumnFamilyStoreMBean;
 -import org.apache.cassandra.db.Table;
 +import org.apache.cassandra.db.Keyspace;
  import org.apache.cassandra.db.compaction.CompactionManagerMBean;
  import org.apache.cassandra.db.compaction.OperationType;
 -import org.apache.cassandra.exceptions.ConfigurationException;
  import org.apache.cassandra.io.util.FileUtils;
  import org.apache.cassandra.locator.EndpointSnitchInfoMBean;
  import org.apache.cassandra.net.MessagingServiceMBean;
@@@ -318,18 -299,23 +310,17 @@@ public class NodeCm
  
          // get the total amount of replicas for this dc and the last token in 
this dc's ring
          List<String> tokens = new ArrayList<String>();
 -        float totalReplicas = 0f;
          String lastToken = "";
  
-         for (Map.Entry<InetAddress, Float> entry : 
filteredOwnerships.entrySet())
+         for (HostStat stat : hoststats)
          {
-             
tokens.addAll(endpointsToTokens.get(entry.getKey().getHostAddress()));
+             tokens.addAll(endpointsToTokens.get(stat.ip));
              lastToken = tokens.get(tokens.size() - 1);
 -            if (stat.owns != null)
 -                totalReplicas += stat.owns;
          }
  
- 
 -        if (keyspaceSelected)
 -            outs.print("Replicas: " + (int) totalReplicas + "\n\n");
 -
          outs.printf(format, "Address", "Rack", "Status", "State", "Load", 
"Owns", "Token");
  
-         if (filteredOwnerships.size() > 1)
+         if (hoststats.size() > 1)
              outs.printf(format, "", "", "", "", "", "", lastToken);
          else
              outs.println();
@@@ -584,7 -508,70 +513,70 @@@
          }
      }
  
+     private Map<String, SetHostStat> getOwnershipByDc(boolean resolveIp, 
Map<String, String> tokenToEndpoint, 
+                                                       Map<InetAddress, Float> 
ownerships) throws UnknownHostException
+     {
+         Map<String, SetHostStat> ownershipByDc = Maps.newLinkedHashMap();
+         EndpointSnitchInfoMBean epSnitchInfo = 
probe.getEndpointSnitchInfoProxy();
+ 
+         for (Entry<String, String> tokenAndEndPoint : 
tokenToEndpoint.entrySet())
+         {
+             String dc = 
epSnitchInfo.getDatacenter(tokenAndEndPoint.getValue());
+             if (!ownershipByDc.containsKey(dc))
+                 ownershipByDc.put(dc, new SetHostStat(resolveIp));
+             ownershipByDc.get(dc).add(tokenAndEndPoint.getKey(), 
tokenAndEndPoint.getValue(), ownerships);
+         }
+ 
+         return ownershipByDc;
+     }
+ 
+     static class SetHostStat implements Iterable<HostStat> {
+         final List<HostStat> hostStats = new ArrayList<HostStat>();
+         final boolean resolveIp;
+ 
+         public SetHostStat(boolean resolveIp)
+         {
+             this.resolveIp = resolveIp;
+         }
+ 
+         public int size()
+         {
+             return hostStats.size();
+         }
+ 
+         @Override
+         public Iterator<HostStat> iterator() {
+             return hostStats.iterator();
+         }
+ 
+         public void add(String token, String host, Map<InetAddress, Float> 
ownerships) throws UnknownHostException {
+             InetAddress endpoint = InetAddress.getByName(host);
+             Float owns = ownerships.get(endpoint);
+             hostStats.add(new HostStat(token, endpoint, resolveIp, owns));
+         }
+     }
+ 
+     static class HostStat {
+         public final String ip;
+         public final String dns;
+         public final Float owns;
+         public final String token;
+ 
+         public HostStat(String token, InetAddress endPoint, boolean 
resolveIp, Float owns) 
+         {
+             this.token = token;
+             this.ip = endPoint.getHostAddress();
+             this.dns = resolveIp ? endPoint.getHostName() : null;
+             this.owns = owns;
+         }
+ 
+         public String ipOrDns()
+         {
+             return (dns != null) ? dns : ip;
+         }
+     }
+ 
 -    /** Writes a table of cluster-wide node information to a PrintStream
 +    /** Writes a keyspaceName of cluster-wide node information to a 
PrintStream
       * @throws UnknownHostException */
      public void printClusterStatus(PrintStream outs, String keyspace, boolean 
resolveIp) throws UnknownHostException
      {

Reply via email to