You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2013/08/29 06:14:57 UTC

[2/6] git commit: Add snitch, schema version, cluster, partitioner to JMX patch by Lyuben Todorov; reviewed by Jeremiah Jordan for CASSANDRA-5881

Add snitch, schema version, cluster, partitioner to JMX
patch by Lyuben Todorov; reviewed by Jeremiah Jordan for CASSANDRA-5881


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

Branch: refs/heads/cassandra-2.0
Commit: 254d315d52e0d442212b4a3840ae225dcb4086e2
Parents: a35f1c2
Author: Jonathan Ellis <jb...@apache.org>
Authored: Wed Aug 28 23:12:31 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Wed Aug 28 23:12:31 2013 -0500

----------------------------------------------------------------------
 CHANGES.txt                                     |  1 +
 .../cassandra/locator/EndpointSnitchInfo.java   |  5 ++++
 .../locator/EndpointSnitchInfoMBean.java        |  8 +++++++
 .../apache/cassandra/service/StorageProxy.java  |  5 ++++
 .../cassandra/service/StorageProxyMBean.java    |  6 +++++
 .../cassandra/service/StorageService.java       | 12 ++++++++++
 .../cassandra/service/StorageServiceMBean.java  |  5 ++++
 .../org/apache/cassandra/tools/NodeCmd.java     | 25 ++++++++++++++++++++
 .../org/apache/cassandra/tools/NodeProbe.java   | 10 ++++++++
 .../apache/cassandra/tools/NodeToolHelp.yaml    |  3 +++
 10 files changed, 80 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/254d315d/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 6aa5762..9ef0651 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 1.2.10
+ * Add snitch, schema version, cluster, partitioner to JMX (CASSANDRA-5881)
  * Fix CqlRecordWriter with composite keys (CASSANDRA-5949)
  * Allow disabling SlabAllocator (CASSANDRA-5935)
  * Make user-defined compaction JMX blocking (CASSANDRA-4952)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/254d315d/src/java/org/apache/cassandra/locator/EndpointSnitchInfo.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/locator/EndpointSnitchInfo.java b/src/java/org/apache/cassandra/locator/EndpointSnitchInfo.java
index 6447b19..c2f88bb 100644
--- a/src/java/org/apache/cassandra/locator/EndpointSnitchInfo.java
+++ b/src/java/org/apache/cassandra/locator/EndpointSnitchInfo.java
@@ -50,4 +50,9 @@ public class EndpointSnitchInfo implements EndpointSnitchInfoMBean
     {
         return DatabaseDescriptor.getEndpointSnitch().getRack(InetAddress.getByName(host));
     }
+
+    public String getSnitchName()
+    {
+        return DatabaseDescriptor.getEndpointSnitch().getClass().getName();
+    }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/254d315d/src/java/org/apache/cassandra/locator/EndpointSnitchInfoMBean.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/locator/EndpointSnitchInfoMBean.java b/src/java/org/apache/cassandra/locator/EndpointSnitchInfoMBean.java
index 0918039..84d2499 100644
--- a/src/java/org/apache/cassandra/locator/EndpointSnitchInfoMBean.java
+++ b/src/java/org/apache/cassandra/locator/EndpointSnitchInfoMBean.java
@@ -37,4 +37,12 @@ public interface EndpointSnitchInfoMBean
      * @throws UnknownHostException
      */
     public String getDatacenter(String host) throws UnknownHostException;
+
+
+    /**
+     * Provides the snitch name of the cluster
+     * @return Snitch name
+     */
+    public String getSnitchName();
+
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/254d315d/src/java/org/apache/cassandra/service/StorageProxy.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/StorageProxy.java b/src/java/org/apache/cassandra/service/StorageProxy.java
index 126bb38..ec27891 100644
--- a/src/java/org/apache/cassandra/service/StorageProxy.java
+++ b/src/java/org/apache/cassandra/service/StorageProxy.java
@@ -1275,6 +1275,11 @@ public class StorageProxy implements StorageProxyMBean
             return rows.size() > command.maxResults ? rows.subList(0, command.maxResults) : rows;
     }
 
+    public Map<String, List<String>> getSchemaVersions()
+    {
+        return this.describeSchemaVersions();
+    }
+
     /**
      * initiate a request/response session with each live node to check whether or not everybody is using the same
      * migration id. This is useful for determining if a schema change has propagated through the cluster. Disagreement

http://git-wip-us.apache.org/repos/asf/cassandra/blob/254d315d/src/java/org/apache/cassandra/service/StorageProxyMBean.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/StorageProxyMBean.java b/src/java/org/apache/cassandra/service/StorageProxyMBean.java
index e8f5b4a..f00b94f 100644
--- a/src/java/org/apache/cassandra/service/StorageProxyMBean.java
+++ b/src/java/org/apache/cassandra/service/StorageProxyMBean.java
@@ -17,6 +17,9 @@
  */
 package org.apache.cassandra.service;
 
+import java.util.List;
+import java.util.Map;
+
 import org.apache.cassandra.metrics.ReadRepairMetrics;
 
 public interface StorageProxyMBean
@@ -92,4 +95,7 @@ public interface StorageProxyMBean
     public long getReadRepairAttempted();
     public long getReadRepairRepairedBlocking();
     public long getReadRepairRepairedBackground();
+
+    /** Returns each live node's schema version */
+    public Map<String, List<String>> getSchemaVersions();
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/254d315d/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/StorageService.java b/src/java/org/apache/cassandra/service/StorageService.java
index 9339132..2c3a1c8 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -3922,4 +3922,16 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
     {
         rangeXferExecutor.tearDown();
     }
+
+    /** Returns the name of the cluster */
+    public String getClusterName()
+    {
+        return DatabaseDescriptor.getClusterName();
+    }
+
+    /** Returns the cluster partitioner */
+    public String getPartitionerName()
+    {
+        return DatabaseDescriptor.getPartitionerName();
+    }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/254d315d/src/java/org/apache/cassandra/service/StorageServiceMBean.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/StorageServiceMBean.java b/src/java/org/apache/cassandra/service/StorageServiceMBean.java
index 15f2113..2c63b46 100644
--- a/src/java/org/apache/cassandra/service/StorageServiceMBean.java
+++ b/src/java/org/apache/cassandra/service/StorageServiceMBean.java
@@ -470,4 +470,9 @@ public interface StorageServiceMBean extends NotificationEmitter
     public void enableScheduledRangeXfers();
     /** Disable processing of queued range transfers. */
     public void disableScheduledRangeXfers();
+
+    /** Returns the name of the cluster */
+    public String getClusterName();
+    /** Returns the cluster partitioner */
+    public String getPartitionerName();
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/254d315d/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 4e9f461..2b7bfbf 100644
--- a/src/java/org/apache/cassandra/tools/NodeCmd.java
+++ b/src/java/org/apache/cassandra/tools/NodeCmd.java
@@ -111,6 +111,7 @@ public class NodeCmd
         COMPACT,
         COMPACTIONSTATS,
         DECOMMISSION,
+        DESCRIBECLUSTER,
         DISABLEBINARY,
         DISABLEGOSSIP,
         DISABLEHANDOFF,
@@ -771,6 +772,29 @@ public class NodeCmd
         outs.println("Current stream throughput: " + probe.getStreamThroughput() + " MB/s");
     }
 
+    /**
+     * Print the name, snitch, partitioner and schema version(s) of a cluster
+     *
+     * @param outs Output stream
+     * @param host Server address
+     */
+    public void printClusterDescription(PrintStream outs, String host)
+    {
+        // display cluster name, snitch and partitioner
+        outs.println("Cluster Information:");
+        outs.println("\tName: " + probe.getClusterName());
+        outs.println("\tSnitch: " + probe.getEndpointSnitchInfoProxy().getSnitchName());
+        outs.println("\tPartitioner: " + probe.getPartitioner());
+
+        // display schema version for each node
+        outs.println("\tSchema versions:");
+        Map<String, List<String>> schemaVersions = probe.getSpProxy().getSchemaVersions();
+        for (String version : schemaVersions.keySet())
+        {
+            outs.println(String.format("\t\t%s: %s%n", version, schemaVersions.get(version)));
+        }
+    }
+
     public void printColumnFamilyStats(PrintStream outs)
     {
         Map <String, List <ColumnFamilyStoreMBean>> cfstoreMap = new HashMap <String, List <ColumnFamilyStoreMBean>>();
@@ -1109,6 +1133,7 @@ public class NodeCmd
                 case TPSTATS         : nodeCmd.printThreadPoolStats(System.out); break;
                 case VERSION         : nodeCmd.printReleaseVersion(System.out); break;
                 case COMPACTIONSTATS : nodeCmd.printCompactionStats(System.out); break;
+                case DESCRIBECLUSTER : nodeCmd.printClusterDescription(System.out, host); break;
                 case DISABLEBINARY   : probe.stopNativeTransport(); break;
                 case ENABLEBINARY    : probe.startNativeTransport(); break;
                 case STATUSBINARY    : nodeCmd.printIsNativeTransportRunning(System.out); break;

http://git-wip-us.apache.org/repos/asf/cassandra/blob/254d315d/src/java/org/apache/cassandra/tools/NodeProbe.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/tools/NodeProbe.java b/src/java/org/apache/cassandra/tools/NodeProbe.java
index a9b0bb5..e7cf592 100644
--- a/src/java/org/apache/cassandra/tools/NodeProbe.java
+++ b/src/java/org/apache/cassandra/tools/NodeProbe.java
@@ -671,6 +671,16 @@ public class NodeProbe
         return ssProxy.getKeyspaces();
     }
 
+    public String getClusterName()
+    {
+        return ssProxy.getClusterName();
+    }
+
+    public String getPartitioner()
+    {
+        return ssProxy.getPartitionerName();
+    }
+
     public void disableHintedHandoff()
     {
         spProxy.setHintedHandoffEnabled(false);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/254d315d/src/resources/org/apache/cassandra/tools/NodeToolHelp.yaml
----------------------------------------------------------------------
diff --git a/src/resources/org/apache/cassandra/tools/NodeToolHelp.yaml b/src/resources/org/apache/cassandra/tools/NodeToolHelp.yaml
index 6e366f4..b540b2c 100644
--- a/src/resources/org/apache/cassandra/tools/NodeToolHelp.yaml
+++ b/src/resources/org/apache/cassandra/tools/NodeToolHelp.yaml
@@ -118,6 +118,9 @@ commands:
   - name: setstreamthroughput  <value_in_mb>
     help: |
       Set the MB/s throughput cap for streaming in the system, or 0 to disable throttling.
+  - name: describecluster
+    help: |
+      Print the name, snitch, partitioner and schema version of a cluster.
   - name: describering [keyspace]
     help: |
       Shows the token ranges info of a given keyspace.