This is an automated email from the ASF dual-hosted git repository. ifesdjeen pushed a commit to branch cep-15-accord in repository https://gitbox.apache.org/repos/asf/cassandra.git
commit f21e038263448d8199c1b77919ff5fc0f189c7eb Author: Alex Petrov <[email protected]> AuthorDate: Wed Aug 28 16:38:00 2024 +0200 Wait for flusher shutdown --- src/java/org/apache/cassandra/journal/Flusher.java | 7 ++++++- src/java/org/apache/cassandra/journal/Journal.java | 23 +++++++++++++++------- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/java/org/apache/cassandra/journal/Flusher.java b/src/java/org/apache/cassandra/journal/Flusher.java index 41cdd389e8..ee52aa307d 100644 --- a/src/java/org/apache/cassandra/journal/Flusher.java +++ b/src/java/org/apache/cassandra/journal/Flusher.java @@ -17,6 +17,7 @@ */ package org.apache.cassandra.journal; +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.locks.LockSupport; @@ -99,11 +100,15 @@ final class Flusher<K, V> flushExecutor = executorFactory().infiniteLoop(flushExecutorName, new FlushRunnable(preciseTime), SAFE, NON_DAEMON, SYNCHRONIZED); } - void shutdown() + void shutdown() throws InterruptedException { flushExecutor.shutdown(); + flushExecutor.awaitTermination(1, MINUTES); if (fsyncExecutor != null) + { fsyncExecutor.shutdown(); + fsyncExecutor.awaitTermination(1, MINUTES); + } } @Simulate(with={MONITORS,GLOBAL_CLOCK,LOCK_SUPPORT}) diff --git a/src/java/org/apache/cassandra/journal/Journal.java b/src/java/org/apache/cassandra/journal/Journal.java index d633956e51..db86106d42 100644 --- a/src/java/org/apache/cassandra/journal/Journal.java +++ b/src/java/org/apache/cassandra/journal/Journal.java @@ -244,13 +244,22 @@ public class Journal<K, V> implements Shutdownable public void shutdown() { - allocator.shutdown(); - //compactor.stop(); - //invalidator.stop(); - flusher.shutdown(); - closer.shutdown(); - closeAllSegments(); - metrics.deregister(); + try + { + allocator.shutdown(); + allocator.awaitTermination(1, TimeUnit.MINUTES); + //compactor.stop(); + //invalidator.stop(); + flusher.shutdown(); + closer.shutdown(); + closer.awaitTermination(1, TimeUnit.MINUTES); + closeAllSegments(); + metrics.deregister(); + } + catch (InterruptedException e) + { + logger.error("Could not shutdown journal", e); + } } @Override --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
