aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjonmv <venstad@gmail.com>2023-08-31 08:25:32 +0200
committerjonmv <venstad@gmail.com>2023-08-31 08:25:32 +0200
commiteb479a5207ea2b536b8d4cc78afa17203ff29be7 (patch)
treedb36e18af7b486d05e48a5f010fe0bac2fce0d3f
parent2d3a1be956b24f3eda343bddcecea6b418f4cd7c (diff)
Shut down loggers on deconstruct, and do this in unit test instead of sleep
-rw-r--r--container-search/src/main/java/com/yahoo/search/logging/AbstractSpoolingLogger.java5
-rw-r--r--container-search/src/main/java/com/yahoo/search/logging/AbstractThreadedLogger.java11
-rw-r--r--container-search/src/test/java/com/yahoo/search/logging/LocalDiskLoggerTest.java12
3 files changed, 13 insertions, 15 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/logging/AbstractSpoolingLogger.java b/container-search/src/main/java/com/yahoo/search/logging/AbstractSpoolingLogger.java
index 601da11ab33..0fcc54493e3 100644
--- a/container-search/src/main/java/com/yahoo/search/logging/AbstractSpoolingLogger.java
+++ b/container-search/src/main/java/com/yahoo/search/logging/AbstractSpoolingLogger.java
@@ -54,8 +54,9 @@ public abstract class AbstractSpoolingLogger extends AbstractThreadedLogger impl
return true;
}
- // TODO Call from a component or make this class a component
- public void shutdown() {
+ @Override
+ public void deconstruct() {
+ super.deconstruct();
executorService.shutdown();
try {
if ( ! executorService.awaitTermination(10, TimeUnit.SECONDS))
diff --git a/container-search/src/main/java/com/yahoo/search/logging/AbstractThreadedLogger.java b/container-search/src/main/java/com/yahoo/search/logging/AbstractThreadedLogger.java
index ffc916bad65..db5d0494822 100644
--- a/container-search/src/main/java/com/yahoo/search/logging/AbstractThreadedLogger.java
+++ b/container-search/src/main/java/com/yahoo/search/logging/AbstractThreadedLogger.java
@@ -2,6 +2,8 @@
package com.yahoo.search.logging;
+import com.yahoo.component.AbstractComponent;
+
import java.util.concurrent.Executor;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.RejectedExecutionException;
@@ -10,7 +12,7 @@ import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
-abstract class AbstractThreadedLogger implements Logger {
+abstract class AbstractThreadedLogger extends AbstractComponent implements Logger {
private final static java.util.logging.Logger log = java.util.logging.Logger.getLogger(AbstractThreadedLogger.class.getName());
@@ -51,10 +53,15 @@ abstract class AbstractThreadedLogger implements Logger {
}
/**
- * Actually transports the entry to it's destination
+ * Actually transports the entry to its destination
*/
public abstract boolean transport(LoggerEntry entry);
+ /** Synchronously shuts down and waits for enqueued entries to be sent. */
+ @Override
+ public void deconstruct() {
+ executor.close();
+ }
private static class WorkerThread extends Thread {
diff --git a/container-search/src/test/java/com/yahoo/search/logging/LocalDiskLoggerTest.java b/container-search/src/test/java/com/yahoo/search/logging/LocalDiskLoggerTest.java
index 6ed1154e58a..e94068fa988 100644
--- a/container-search/src/test/java/com/yahoo/search/logging/LocalDiskLoggerTest.java
+++ b/container-search/src/test/java/com/yahoo/search/logging/LocalDiskLoggerTest.java
@@ -32,21 +32,11 @@ public class LocalDiskLoggerTest {
.blob("my entry blob content".getBytes())
.track("my-track")
.send();
- waitForFile(logFile);
+ logger.deconstruct();
String test = IOUtils.readAll(new FileReader(logFile));
assertTrue(test.contains(Base64.getEncoder().encodeToString("my entry blob content".getBytes())));
assertTrue(test.contains("my-track"));
}
- private void waitForFile(File file) throws InterruptedException {
- int waitFor = 10;
- while ( ! file.exists() && --waitFor > 0) {
- Thread.sleep(10);
- }
- if ( ! file.exists()) {
- fail("Local disk logger file was not created");
- }
- }
-
}