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";