Return-Path: X-Original-To: apmail-cassandra-commits-archive@www.apache.org Delivered-To: apmail-cassandra-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 703DA9A74 for ; Wed, 18 Apr 2012 18:26:52 +0000 (UTC) Received: (qmail 43594 invoked by uid 500); 18 Apr 2012 18:26:51 -0000 Delivered-To: apmail-cassandra-commits-archive@cassandra.apache.org Received: (qmail 43533 invoked by uid 500); 18 Apr 2012 18:26:51 -0000 Mailing-List: contact commits-help@cassandra.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cassandra.apache.org Delivered-To: mailing list commits@cassandra.apache.org Received: (qmail 43507 invoked by uid 99); 18 Apr 2012 18:26:51 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 18 Apr 2012 18:26:51 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 90832D5F6; Wed, 18 Apr 2012 18:26:51 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: jbellis@apache.org To: commits@cassandra.apache.org X-Mailer: ASF-Git Admin Mailer Subject: [4/15] git commit: add time remaining estimate to nodetool compactionstats patch by Fabien Rousseau; reviewed by jbellis for CASSANDRA-4167 Message-Id: <20120418182651.90832D5F6@tyr.zones.apache.org> Date: Wed, 18 Apr 2012 18:26:51 +0000 (UTC) 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/trunk Commit: 726f6827dfd2059a793ec433653b2fe2ddc74266 Parents: 8246493 Author: Jonathan Ellis Authored: Wed Apr 18 13:23:17 2012 -0500 Committer: Jonathan Ellis 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 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();