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]

Reply via email to