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 2012/04/18 20:26:51 UTC

[5/15] git commit: add time remaining estimate to nodetool compactionstats patch by Fabien Rousseau; reviewed by jbellis for CASSANDRA-4167

add time remaining estimate to nodetool compactionstats
patch by Fabien Rousseau; reviewed by jbellis for CASSANDRA-4167


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

Branch: refs/heads/cassandra-1.1.0
Commit: 726f6827dfd2059a793ec433653b2fe2ddc74266
Parents: 8246493
Author: Jonathan Ellis <jb...@apache.org>
Authored: Wed Apr 18 13:23:17 2012 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Wed Apr 18 13:23:17 2012 -0500

----------------------------------------------------------------------
 CHANGES.txt                                        |    1 +
 src/java/org/apache/cassandra/tools/NodeCmd.java   |   13 +++++++++++++
 src/java/org/apache/cassandra/tools/NodeProbe.java |    5 +++++
 3 files changed, 19 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/726f6827/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 3644c33..b8de41f 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -5,6 +5,7 @@ Merged from 1.0:
  * avoid streaming empty files with bulk loader if sstablewriter errors out
    (CASSANDRA-3946)
  * fix stress build (CASSANDRA-4140)
+ * add time remaining estimate to nodetool compactionstats (CASSANDRA-4167)
 
 
 1.1-rc1

http://git-wip-us.apache.org/repos/asf/cassandra/blob/726f6827/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 8540deb..afebfcd 100644
--- a/src/java/org/apache/cassandra/tools/NodeCmd.java
+++ b/src/java/org/apache/cassandra/tools/NodeCmd.java
@@ -38,6 +38,7 @@ import org.apache.cassandra.concurrent.JMXEnabledThreadPoolExecutorMBean;
 import org.apache.cassandra.config.ConfigurationException;
 import org.apache.cassandra.db.ColumnFamilyStoreMBean;
 import org.apache.cassandra.db.compaction.CompactionManagerMBean;
+import org.apache.cassandra.db.compaction.OperationType;
 import org.apache.cassandra.net.MessagingServiceMBean;
 import org.apache.cassandra.thrift.InvalidRequestException;
 import org.apache.cassandra.utils.EstimatedHistogram;
@@ -446,17 +447,29 @@ public class NodeCmd
 
     public void printCompactionStats(PrintStream outs)
     {
+	int compactionThroughput = probe.getCompactionThroughput();
         CompactionManagerMBean cm = probe.getCompactionManagerProxy();
         outs.println("pending tasks: " + cm.getPendingTasks());
         if (cm.getCompactions().size() > 0)
             outs.printf("%25s%16s%16s%16s%16s%10s%n", "compaction type", "keyspace", "column family", "bytes compacted", "bytes total", "progress");
+        long remainingBytes = 0;
         for (Map<String, String> c : cm.getCompactions())
         {
             String percentComplete = new Long(c.get("totalBytes")) == 0
                                    ? "n/a"
                                    : new DecimalFormat("0.00").format((double) new Long(c.get("bytesComplete")) / new Long(c.get("totalBytes")) * 100) + "%";
             outs.printf("%25s%16s%16s%16s%16s%10s%n", c.get("taskType"), c.get("keyspace"), c.get("columnfamily"), c.get("bytesComplete"), c.get("totalBytes"), percentComplete);
+            if (c.get("taskType").equals(OperationType.COMPACTION.toString()))
+                remainingBytes += (new Long(c.get("totalBytes")) - new Long(c.get("bytesComplete")));
         }
+        long remainingTimeInSecs = compactionThroughput == 0 || remainingBytes == 0
+                        ? -1 
+                        : (remainingBytes) / (long) (1024L * 1024L * compactionThroughput);
+        String remainingTime = remainingTimeInSecs < 0 
+                        ? "n/a"
+                        : String.format("%dh%02dm%02ds", remainingTimeInSecs / 3600, (remainingTimeInSecs % 3600) / 60, (remainingTimeInSecs % 60)); 
+
+        outs.printf("%25s%10s%n", "Active compaction remaining time : ", remainingTime);
     }
 
     public void printColumnFamilyStats(PrintStream outs)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/726f6827/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 cea2fc6..2ae6050 100644
--- a/src/java/org/apache/cassandra/tools/NodeProbe.java
+++ b/src/java/org/apache/cassandra/tools/NodeProbe.java
@@ -613,6 +613,11 @@ public class NodeProbe
         ssProxy.setCompactionThroughputMbPerSec(value);
     }
 
+    public int getCompactionThroughput()
+    {
+        return ssProxy.getCompactionThroughputMbPerSec();
+    }
+
     public int getExceptionCount()
     {
         return ssProxy.getExceptionCount();