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 07F0718DD8 for ; Sat, 8 Aug 2015 10:37:06 +0000 (UTC) Received: (qmail 1687 invoked by uid 500); 8 Aug 2015 10:37:05 -0000 Delivered-To: apmail-cassandra-commits-archive@cassandra.apache.org Received: (qmail 1524 invoked by uid 500); 8 Aug 2015 10:37:05 -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 1235 invoked by uid 99); 8 Aug 2015 10:37:04 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 08 Aug 2015 10:37:04 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 9BB77E0E21; Sat, 8 Aug 2015 10:37:04 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: benedict@apache.org To: commits@cassandra.apache.org Date: Sat, 08 Aug 2015 10:37:04 -0000 Message-Id: <211d8c994abb41c29a692a89d91a1ec6@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [01/10] cassandra git commit: Make batch commit log mode easier to tune Repository: cassandra Updated Branches: refs/heads/cassandra-2.1 1e3f03e5b -> 98a08ebcf refs/heads/cassandra-2.2 67903d778 -> 6fd41ab15 refs/heads/cassandra-3.0 489a9e8fa -> 7ea2ce124 refs/heads/trunk 05de664ac -> 6292aaa72 Make batch commit log mode easier to tune This patch effectively ignores the batch commit log mode sync interval option, and performs a sync as soon as work becomes available, causing a natural grouping of writes and minimal latency. patch by benedict; reviewed by ariel for CASSANDRA-9533 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/98a08ebc Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/98a08ebc Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/98a08ebc Branch: refs/heads/cassandra-2.1 Commit: 98a08ebcf11a5124ddf865b5337c781a11377588 Parents: 1e3f03e Author: Benedict Elliott Smith Authored: Tue Aug 4 12:47:10 2015 +0100 Committer: Benedict Elliott Smith Committed: Sat Aug 8 12:33:22 2015 +0200 ---------------------------------------------------------------------- .../apache/cassandra/db/commitlog/AbstractCommitLogService.java | 3 ++- .../org/apache/cassandra/db/commitlog/BatchCommitLogService.java | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/98a08ebc/src/java/org/apache/cassandra/db/commitlog/AbstractCommitLogService.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/commitlog/AbstractCommitLogService.java b/src/java/org/apache/cassandra/db/commitlog/AbstractCommitLogService.java index d9ea683..9f3b410 100644 --- a/src/java/org/apache/cassandra/db/commitlog/AbstractCommitLogService.java +++ b/src/java/org/apache/cassandra/db/commitlog/AbstractCommitLogService.java @@ -43,7 +43,7 @@ public abstract class AbstractCommitLogService // signal that writers can wait on to be notified of a completed sync protected final WaitQueue syncComplete = new WaitQueue(); - private final Semaphore haveWork = new Semaphore(1); + protected final Semaphore haveWork = new Semaphore(1); private static final Logger logger = LoggerFactory.getLogger(AbstractCommitLogService.class); @@ -114,6 +114,7 @@ public abstract class AbstractCommitLogService try { haveWork.tryAcquire(sleep, TimeUnit.MILLISECONDS); + haveWork.drainPermits(); } catch (InterruptedException e) { http://git-wip-us.apache.org/repos/asf/cassandra/blob/98a08ebc/src/java/org/apache/cassandra/db/commitlog/BatchCommitLogService.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/commitlog/BatchCommitLogService.java b/src/java/org/apache/cassandra/db/commitlog/BatchCommitLogService.java index 65bee40..dd55d24 100644 --- a/src/java/org/apache/cassandra/db/commitlog/BatchCommitLogService.java +++ b/src/java/org/apache/cassandra/db/commitlog/BatchCommitLogService.java @@ -30,6 +30,7 @@ class BatchCommitLogService extends AbstractCommitLogService { // wait until record has been safely persisted to disk pending.incrementAndGet(); + haveWork.release(); alloc.awaitDiskSync(); pending.decrementAndGet(); }