Updated Branches: refs/heads/cassandra-1.1.0 5697c3997 -> f11e4f2a1
Report lifetime bytes compacted and number of compactions. Patch by brandonwilliams, reviewed by Nick Bailey for CASSANDRA-4067 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/f11e4f2a Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/f11e4f2a Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/f11e4f2a Branch: refs/heads/cassandra-1.1.0 Commit: f11e4f2a1c3387083637efc85bcfa7a9d0c3248a Parents: 5697c39 Author: Brandon Williams <[email protected]> Authored: Fri Mar 23 14:57:46 2012 -0500 Committer: Brandon Williams <[email protected]> Committed: Fri Mar 23 14:57:46 2012 -0500 ---------------------------------------------------------------------- .../cassandra/db/compaction/CompactionManager.java | 27 +++++++++++++++ .../db/compaction/CompactionManagerMBean.java | 10 +++++ 2 files changed, 37 insertions(+), 0 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/f11e4f2a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java index 2900c85..9ddc3c3 100644 --- a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java +++ b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java @@ -982,6 +982,8 @@ public class CompactionManager implements CompactionManagerMBean { // a synchronized identity set of running tasks to their compaction info private static final Set<CompactionInfo.Holder> compactions = Collections.synchronizedSet(Collections.newSetFromMap(new IdentityHashMap<CompactionInfo.Holder, Boolean>())); + private volatile long totalBytesCompacted = 0L; + private volatile long totalCompactionsCompleted = 0L; protected CompactionExecutor(int minThreads, int maxThreads, String name, BlockingQueue<Runnable> queue) { @@ -1007,6 +1009,8 @@ public class CompactionManager implements CompactionManagerMBean public void finishCompaction(CompactionInfo.Holder ci) { compactions.remove(ci); + totalBytesCompacted += ci.getCompactionInfo().getTotalBytes(); + totalCompactionsCompleted += 1; } public static List<CompactionInfo.Holder> getCompactions() @@ -1014,6 +1018,19 @@ public class CompactionManager implements CompactionManagerMBean return new ArrayList<CompactionInfo.Holder>(compactions); } + public long getTotalBytesCompacted() + { + long bytesCompletedInProgress = 0L; + for (CompactionInfo.Holder ci : compactions) + bytesCompletedInProgress += ci.getCompactionInfo().getBytesComplete(); + return bytesCompletedInProgress + totalBytesCompacted; + } + + public long getTotalCompactionsCompleted() + { + return totalCompactionsCompleted; + } + // modified from DebuggableThreadPoolExecutor so that CompactionInterruptedExceptions are not logged @Override public void afterExecute(Runnable r, Throwable t) @@ -1068,6 +1085,16 @@ public class CompactionManager implements CompactionManagerMBean return out; } + public long getTotalBytesCompacted() + { + return executor.getTotalBytesCompacted() + validationExecutor.getTotalBytesCompacted(); + } + + public long getTotalCompactionsCompleted() + { + return executor.getTotalCompactionsCompleted() + validationExecutor.getTotalCompactionsCompleted(); + } + public int getPendingTasks() { int n = 0; http://git-wip-us.apache.org/repos/asf/cassandra/blob/f11e4f2a/src/java/org/apache/cassandra/db/compaction/CompactionManagerMBean.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionManagerMBean.java b/src/java/org/apache/cassandra/db/compaction/CompactionManagerMBean.java index 3fa9176..7e1c04f 100644 --- a/src/java/org/apache/cassandra/db/compaction/CompactionManagerMBean.java +++ b/src/java/org/apache/cassandra/db/compaction/CompactionManagerMBean.java @@ -40,6 +40,16 @@ public interface CompactionManagerMBean public long getCompletedTasks(); /** + * @return total number of bytes compacted since server [re]start + */ + public long getTotalBytesCompacted(); + + /** + * @return total number of compactions since server [re]start + */ + public long getTotalCompactionsCompleted(); + + /** * Triggers the compaction of user specified sstables. * * @param ksname the keyspace for the sstables to compact
