Updated Branches: refs/heads/cassandra-2.0 7e59db22b -> 5dc508645 refs/heads/trunk 8f5eb84b6 -> bbab80ff3
Move batchlog replay to its own executor patch by Oleg Anastasyev; reviewed by jbellis for CASSANDRA-6079 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/5dc50864 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/5dc50864 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/5dc50864 Branch: refs/heads/cassandra-2.0 Commit: 5dc508645759f6f45f837ae38bbefc631b2209a6 Parents: 7e59db2 Author: Jonathan Ellis <[email protected]> Authored: Mon Sep 23 09:22:00 2013 -0500 Committer: Jonathan Ellis <[email protected]> Committed: Mon Sep 23 09:22:00 2013 -0500 ---------------------------------------------------------------------- CHANGES.txt | 1 + src/java/org/apache/cassandra/db/BatchlogManager.java | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/5dc50864/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 6df5559..0403381 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 2.0.2 + * Move batchlog replay to its own executor (CASSANDRA-6079) * Improve memory usage of metadata min/max column names (CASSANDRA-6077) http://git-wip-us.apache.org/repos/asf/cassandra/blob/5dc50864/src/java/org/apache/cassandra/db/BatchlogManager.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/BatchlogManager.java b/src/java/org/apache/cassandra/db/BatchlogManager.java index 558a498..bad076f 100644 --- a/src/java/org/apache/cassandra/db/BatchlogManager.java +++ b/src/java/org/apache/cassandra/db/BatchlogManager.java @@ -17,13 +17,16 @@ */ package org.apache.cassandra.db; -import java.io.*; +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; import java.lang.management.ManagementFactory; import java.net.InetAddress; import java.nio.ByteBuffer; import java.util.*; import java.util.concurrent.CopyOnWriteArraySet; import java.util.concurrent.ExecutionException; +import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicLong; @@ -35,6 +38,7 @@ import com.google.common.collect.Lists; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.apache.cassandra.concurrent.DebuggableScheduledThreadPoolExecutor; import org.apache.cassandra.config.CFMetaData; import org.apache.cassandra.config.DatabaseDescriptor; import org.apache.cassandra.cql3.QueryProcessor; @@ -70,6 +74,8 @@ public class BatchlogManager implements BatchlogManagerMBean private final AtomicLong totalBatchesReplayed = new AtomicLong(); private final AtomicBoolean isReplaying = new AtomicBoolean(); + private static final ScheduledExecutorService batchlogTasks = new DebuggableScheduledThreadPoolExecutor("BatchlogTasks"); + public void start() { MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); @@ -89,7 +95,8 @@ public class BatchlogManager implements BatchlogManagerMBean replayAllFailedBatches(); } }; - StorageService.optionalTasks.scheduleWithFixedDelay(runnable, StorageService.RING_DELAY, REPLAY_INTERVAL, TimeUnit.MILLISECONDS); + + batchlogTasks.scheduleWithFixedDelay(runnable, StorageService.RING_DELAY, REPLAY_INTERVAL, TimeUnit.MILLISECONDS); } public int countAllBatches()
