Author: brandonwilliams
Date: Tue Dec  7 21:06:53 2010
New Revision: 1043201

URL: http://svn.apache.org/viewvc?rev=1043201&view=rev
Log:
nodetool can display compaction stats.  Patch by Edward Capriolo, reviewed by 
brandonwilliams for CASSANDRA-1763

Modified:
    
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/tools/NodeCmd.java
    
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/tools/NodeProbe.java
    cassandra/trunk/src/java/org/apache/cassandra/tools/NodeCmd.java
    cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java

Modified: 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/tools/NodeCmd.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/tools/NodeCmd.java?rev=1043201&r1=1043200&r2=1043201&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/tools/NodeCmd.java
 (original)
+++ 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/tools/NodeCmd.java
 Tue Dec  7 21:06:53 2010
@@ -37,6 +37,7 @@ import org.apache.cassandra.cache.JMXIns
 import org.apache.cassandra.concurrent.IExecutorMBean;
 import org.apache.cassandra.config.DatabaseDescriptor;
 import org.apache.cassandra.db.ColumnFamilyStoreMBean;
+import org.apache.cassandra.db.CompactionManagerMBean;
 import org.apache.cassandra.dht.Token;
 import org.apache.cassandra.net.MessagingServiceMBean;
 
@@ -75,7 +76,7 @@ public class NodeCmd {
                 "clearsnapshot, tpstats, flush, drain, repair, decommission, 
move, loadbalance, removetoken [status|force]|[token], " +
                 "setcachecapacity [keyspace] [cfname] [keycachecapacity] 
[rowcachecapacity], " +
                 "getcompactionthreshold [keyspace] [cfname], 
setcompactionthreshold [cfname] [minthreshold] [maxthreshold], " +
-                "netstats [host], cfhistograms <keyspace> <column_family>");
+                "netstats [host], cfhistograms <keyspace> <column_family>, 
compactionstats");
         String usage = String.format("java %s --host <arg> <command>%n", 
NodeCmd.class.getName());
         hf.printHelp(usage, "", options, header);
     }
@@ -247,7 +248,17 @@ public class NodeCmd {
             completed += n;
         outs.printf("%-25s%10s%10s%15s%n", "Responses", "n/a", pending, 
completed);
     }
-    
+   
+    public void printCompactionStats(PrintStream outs)
+    {
+        CompactionManagerMBean cm = probe.getCompactionManagerProxy();
+        outs.println("compaction type: " + (cm.getCompactionType() == null ? 
"n/a" : cm.getCompactionType()));
+        outs.println("column family: " + (cm.getColumnFamilyInProgress() == 
null ? "n/a" : cm.getColumnFamilyInProgress()));
+        outs.println("bytes compacted: " + (cm.getBytesCompacted() == null ? 
"n/a" : cm.getBytesCompacted()));
+        outs.println("bytes total in progress: " + 
(cm.getBytesTotalInProgress() == null ? "n/a" : cm.getBytesTotalInProgress() ));
+        outs.println("pending tasks: " + cm.getPendingTasks());
+    }
+ 
     public void printColumnFamilyStats(PrintStream outs)
     {
         Map <String, List <ColumnFamilyStoreMBean>> cfstoreMap = new HashMap 
<String, List <ColumnFamilyStoreMBean>>();
@@ -493,6 +504,10 @@ public class NodeCmd {
                 System.exit(3);
             }
         }
+        else if (cmdName.equals("compactionstats"))
+        {
+            nodeCmd.printCompactionStats(System.out);
+        }
         else if (cmdName.equals("cfstats"))
         {
             nodeCmd.printColumnFamilyStats(System.out);

Modified: 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/tools/NodeProbe.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/tools/NodeProbe.java?rev=1043201&r1=1043200&r2=1043201&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/tools/NodeProbe.java
 (original)
+++ 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/tools/NodeProbe.java
 Tue Dec  7 21:06:53 2010
@@ -45,6 +45,8 @@ import org.apache.cassandra.cache.JMXIns
 import org.apache.cassandra.concurrent.IExecutorMBean;
 import org.apache.cassandra.config.ConfigurationException;
 import org.apache.cassandra.db.ColumnFamilyStoreMBean;
+import org.apache.cassandra.db.CompactionManager;
+import org.apache.cassandra.db.CompactionManagerMBean;
 import org.apache.cassandra.dht.IPartitioner;
 import org.apache.cassandra.dht.Token;
 import org.apache.cassandra.locator.IEndpointSnitch;
@@ -72,6 +74,7 @@ public class NodeProbe
 
     private JMXConnector jmxc;
     private MBeanServerConnection mbeanServerConn;
+    private CompactionManagerMBean compactionProxy;
     private StorageServiceMBean ssProxy;
     private MemoryMXBean memProxy;
     private RuntimeMXBean runtimeProxy;
@@ -121,6 +124,8 @@ public class NodeProbe
             ssProxy = JMX.newMBeanProxy(mbeanServerConn, name, 
StorageServiceMBean.class);
             name = new ObjectName(StreamingService.MBEAN_OBJECT_NAME);
             streamProxy = JMX.newMBeanProxy(mbeanServerConn, name, 
StreamingServiceMBean.class);
+            name = new ObjectName(CompactionManager.MBEAN_OBJECT_NAME);
+            compactionProxy = JMX.newMBeanProxy(mbeanServerConn, name, 
CompactionManagerMBean.class);
         } catch (MalformedObjectNameException e)
         {
             throw new RuntimeException(
@@ -224,6 +229,11 @@ public class NodeProbe
         }
     }
 
+    public CompactionManagerMBean getCompactionManagerProxy()
+    {
+      return compactionProxy;
+    }
+
     public JMXInstrumentedCacheMBean getKeyCacheMBean(String tableName, String 
cfName)
     {
         String keyCachePath = "org.apache.cassandra.db:type=Caches,keyspace=" 
+ tableName + ",cache=" + cfName + "KeyCache";

Modified: cassandra/trunk/src/java/org/apache/cassandra/tools/NodeCmd.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/tools/NodeCmd.java?rev=1043201&r1=1043200&r2=1043201&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/tools/NodeCmd.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/tools/NodeCmd.java Tue Dec  7 
21:06:53 2010
@@ -37,6 +37,7 @@ import org.apache.cassandra.cache.JMXIns
 import org.apache.cassandra.concurrent.IExecutorMBean;
 import org.apache.cassandra.config.DatabaseDescriptor;
 import org.apache.cassandra.db.ColumnFamilyStoreMBean;
+import org.apache.cassandra.db.CompactionManagerMBean;
 import org.apache.cassandra.dht.Token;
 import org.apache.cassandra.net.MessagingServiceMBean;
 
@@ -75,7 +76,7 @@ public class NodeCmd {
                 "clearsnapshot, tpstats, flush, drain, repair, decommission, 
move, loadbalance, removetoken [status|force]|[token], " +
                 "setcachecapacity [keyspace] [cfname] [keycachecapacity] 
[rowcachecapacity], " +
                 "getcompactionthreshold [keyspace] [cfname], 
setcompactionthreshold [cfname] [minthreshold] [maxthreshold], " +
-                "netstats [host], cfhistograms <keyspace> <column_family>");
+                "netstats [host], cfhistograms <keyspace> <column_family>, 
compactionstats");
         String usage = String.format("java %s --host <arg> <command>%n", 
NodeCmd.class.getName());
         hf.printHelp(usage, "", options, header);
     }
@@ -247,7 +248,17 @@ public class NodeCmd {
             completed += n;
         outs.printf("%-25s%10s%10s%15s%n", "Responses", "n/a", pending, 
completed);
     }
-    
+   
+    public void printCompactionStats(PrintStream outs)
+    {
+        CompactionManagerMBean cm = probe.getCompactionManagerProxy();
+        outs.println("compaction type: " + (cm.getCompactionType() == null ? 
"n/a" : cm.getCompactionType()));
+        outs.println("column family: " + (cm.getColumnFamilyInProgress() == 
null ? "n/a" : cm.getColumnFamilyInProgress()));
+        outs.println("bytes compacted: " + (cm.getBytesCompacted() == null ? 
"n/a" : cm.getBytesCompacted()));
+        outs.println("bytes total in progress: " + 
(cm.getBytesTotalInProgress() == null ? "n/a" : cm.getBytesTotalInProgress() ));
+        outs.println("pending tasks: " + cm.getPendingTasks());
+    }
+ 
     public void printColumnFamilyStats(PrintStream outs)
     {
         Map <String, List <ColumnFamilyStoreMBean>> cfstoreMap = new HashMap 
<String, List <ColumnFamilyStoreMBean>>();
@@ -493,6 +504,10 @@ public class NodeCmd {
                 System.exit(3);
             }
         }
+        else if (cmdName.equals("compactionstats"))
+        {
+            nodeCmd.printCompactionStats(System.out);
+        }
         else if (cmdName.equals("cfstats"))
         {
             nodeCmd.printColumnFamilyStats(System.out);

Modified: cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java?rev=1043201&r1=1043200&r2=1043201&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java 
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java Tue Dec  
7 21:06:53 2010
@@ -45,6 +45,8 @@ import org.apache.cassandra.cache.JMXIns
 import org.apache.cassandra.concurrent.IExecutorMBean;
 import org.apache.cassandra.config.ConfigurationException;
 import org.apache.cassandra.db.ColumnFamilyStoreMBean;
+import org.apache.cassandra.db.CompactionManager;
+import org.apache.cassandra.db.CompactionManagerMBean;
 import org.apache.cassandra.dht.IPartitioner;
 import org.apache.cassandra.dht.Token;
 import org.apache.cassandra.locator.IEndpointSnitch;
@@ -72,6 +74,7 @@ public class NodeProbe
 
     private JMXConnector jmxc;
     private MBeanServerConnection mbeanServerConn;
+    private CompactionManagerMBean compactionProxy;
     private StorageServiceMBean ssProxy;
     private MemoryMXBean memProxy;
     private RuntimeMXBean runtimeProxy;
@@ -121,6 +124,8 @@ public class NodeProbe
             ssProxy = JMX.newMBeanProxy(mbeanServerConn, name, 
StorageServiceMBean.class);
             name = new ObjectName(StreamingService.MBEAN_OBJECT_NAME);
             streamProxy = JMX.newMBeanProxy(mbeanServerConn, name, 
StreamingServiceMBean.class);
+            name = new ObjectName(CompactionManager.MBEAN_OBJECT_NAME);
+            compactionProxy = JMX.newMBeanProxy(mbeanServerConn, name, 
CompactionManagerMBean.class);
         } catch (MalformedObjectNameException e)
         {
             throw new RuntimeException(
@@ -224,6 +229,11 @@ public class NodeProbe
         }
     }
 
+    public CompactionManagerMBean getCompactionManagerProxy()
+    {
+      return compactionProxy;
+    }
+
     public JMXInstrumentedCacheMBean getKeyCacheMBean(String tableName, String 
cfName)
     {
         String keyCachePath = "org.apache.cassandra.db:type=Caches,keyspace=" 
+ tableName + ",cache=" + cfName + "KeyCache";


Reply via email to