From eb479a5207ea2b536b8d4cc78afa17203ff29be7 Mon Sep 17 00:00:00 2001 From: jonmv Date: Thu, 31 Aug 2023 08:25:32 +0200 Subject: Shut down loggers on deconstruct, and do this in unit test instead of sleep --- .../com/yahoo/search/logging/AbstractSpoolingLogger.java | 5 +++-- .../com/yahoo/search/logging/AbstractThreadedLogger.java | 11 +++++++++-- .../java/com/yahoo/search/logging/LocalDiskLoggerTest.java | 12 +----------- 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"); - } - } - } -- cgit v1.2.3