diff options
author | jonmv <venstad@gmail.com> | 2023-08-31 08:25:32 +0200 |
---|---|---|
committer | jonmv <venstad@gmail.com> | 2023-08-31 08:25:32 +0200 |
commit | eb479a5207ea2b536b8d4cc78afa17203ff29be7 (patch) | |
tree | db36e18af7b486d05e48a5f010fe0bac2fce0d3f /container-search | |
parent | 2d3a1be956b24f3eda343bddcecea6b418f4cd7c (diff) |
Shut down loggers on deconstruct, and do this in unit test instead of sleep
Diffstat (limited to 'container-search')
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"); - } - } - } |