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 080C011AA2 for ; Mon, 13 May 2013 19:45:12 +0000 (UTC) Received: (qmail 93636 invoked by uid 500); 13 May 2013 18:45:12 -0000 Delivered-To: apmail-cassandra-commits-archive@cassandra.apache.org Received: (qmail 93558 invoked by uid 500); 13 May 2013 18:45:12 -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 93547 invoked by uid 99); 13 May 2013 18:45:12 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 13 May 2013 18:45:12 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id ED0EB88FBFA; Mon, 13 May 2013 18:45:11 +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 Date: Mon, 13 May 2013 18:45:11 -0000 Message-Id: <2ae3ed61d23c4005b2aeb16517530761@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [1/2] git commit: Ensure that submitBackground enqueues at least one task patch by Oleg Anastasyev; reviewed by jbellis for CASSANDRA-5554 Updated Branches: refs/heads/cassandra-1.2 56927973f -> 3b41d21d9 refs/heads/trunk 31d991a25 -> 740e344c7 Ensure that submitBackground enqueues at least one task patch by Oleg Anastasyev; reviewed by jbellis for CASSANDRA-5554 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/740e344c Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/740e344c Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/740e344c Branch: refs/heads/trunk Commit: 740e344c7fc1ee0283744fefd659db999b48c71f Parents: 31d991a Author: Jonathan Ellis Authored: Mon May 13 11:51:56 2013 -0500 Committer: Jonathan Ellis Committed: Mon May 13 13:44:40 2013 -0500 ---------------------------------------------------------------------- CHANGES.txt | 2 ++ .../cassandra/db/compaction/CompactionManager.java | 15 ++++++++------- 2 files changed, 10 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/740e344c/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index fb95e14..f67f0c2 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -45,7 +45,9 @@ * Add alias support to SELECT statement (CASSANDRA-5075) * Don't create empty RowMutations in CommitLogReplayer (CASSANDRA-5541) + 1.2.5 + * Ensure that submitBackground enqueues at least one task (CASSANDRA-5554) * fix 2i updates with identical values and timestamps (CASSANDRA-5540) * fix compaction throttling bursty-ness (CASSANDRA-4316) * reduce memory consumption of IndexSummary (CASSANDRA-5506) http://git-wip-us.apache.org/repos/asf/cassandra/blob/740e344c/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 758068c..e0d186f 100644 --- a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java +++ b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java @@ -122,8 +122,8 @@ public class CompactionManager implements CompactionManagerMBean /** * Call this whenever a compaction might be needed on the given columnfamily. - * It's okay to over-call (within reason) since the compactions are single-threaded, - * and if a call is unnecessary, it will just be no-oped in the bucketing phase. + * It's okay to over-call (within reason) if a call is unnecessary, it will + * turn into a no-op in the bucketing/candidate-scan phase. */ public List> submitBackground(final ColumnFamilyStore cfs) { @@ -146,12 +146,14 @@ public class CompactionManager implements CompactionManagerMBean cfs.name, cfs.getCompactionStrategy().getClass().getSimpleName()); List> futures = new ArrayList>(); - // if we have room for more compactions, then fill up executor - while (executor.getActiveCount() + futures.size() < executor.getMaximumPoolSize()) - { + + // we must schedule it at least once, otherwise compaction will stop for a CF until next flush + do { futures.add(executor.submit(new BackgroundCompactionTask(cfs))); compactingCF.add(cfs); - } + // if we have room for more compactions, then fill up executor + } while (executor.getActiveCount() + futures.size() < executor.getMaximumPoolSize()); + return futures; } @@ -490,7 +492,6 @@ public class CompactionManager implements CompactionManagerMBean throw new IOException("disk full"); SSTableScanner scanner = sstable.getScanner(getRateLimiter()); - long rowsRead = 0; List indexedColumnsInRow = null; CleanupInfo ci = new CleanupInfo(sstable, scanner);