From 6fee0e0450584651e0e6134fcdce1914f7798e6e Mon Sep 17 00:00:00 2001 From: Harald Musum Date: Wed, 7 Jun 2023 13:19:46 +0200 Subject: Delete spooler file when entries sent successfully --- .../search/logging/AbstractSpoolingLogger.java | 3 ++- .../java/com/yahoo/search/logging/Spooler.java | 11 ++++++-- .../java/com/yahoo/search/logging/SpoolerTest.java | 29 ++++++++++++++++++++++ 3 files changed, 40 insertions(+), 3 deletions(-) (limited to 'container-search') 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 a047d4c0fe1..601da11ab33 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 @@ -2,6 +2,7 @@ package com.yahoo.search.logging; import com.yahoo.concurrent.DaemonThreadFactory; + import java.io.IOException; import java.time.Clock; import java.util.concurrent.RejectedExecutionException; @@ -44,7 +45,7 @@ public abstract class AbstractSpoolingLogger extends AbstractThreadedLogger impl @Override public boolean send(LoggerEntry entry) { - log.log(Level.INFO, "Sending"); + log.log(Level.FINE, "Sending entry " + entry + " to spooler"); try { executor.execute(() -> spooler.write(entry)); } catch (RejectedExecutionException e) { diff --git a/container-search/src/main/java/com/yahoo/search/logging/Spooler.java b/container-search/src/main/java/com/yahoo/search/logging/Spooler.java index 08cfec75fc2..e6d5bfc59ff 100644 --- a/container-search/src/main/java/com/yahoo/search/logging/Spooler.java +++ b/container-search/src/main/java/com/yahoo/search/logging/Spooler.java @@ -125,8 +125,15 @@ public class Spooler { } catch (Exception e) { handleFailure(f); } finally { - if (success && keepSuccessFiles) { - moveProcessedFile(f, successesPath); + if (success) { + if (keepSuccessFiles) + moveProcessedFile(f, successesPath); + else + try { + Files.delete(f.toPath()); + } catch (IOException e) { + log.log(Level.WARNING, "Unable to delete file " + f, e); + } } } } diff --git a/container-search/src/test/java/com/yahoo/search/logging/SpoolerTest.java b/container-search/src/test/java/com/yahoo/search/logging/SpoolerTest.java index dc8f82e4d5a..b07e576241b 100644 --- a/container-search/src/test/java/com/yahoo/search/logging/SpoolerTest.java +++ b/container-search/src/test/java/com/yahoo/search/logging/SpoolerTest.java @@ -56,6 +56,35 @@ public class SpoolerTest { assertTrue(spooler.failures().isEmpty(), spooler.failures().toString()); } + @Test + public void testSpoolingLoggerCleanup() throws IOException { + Path spoolDir = tempDir.resolve("spool"); + + Spooler spooler = createSpooler(spoolDir, 1, false, 5); + + TestLogger logger = new TestLogger(spooler); + assertTrue(sendEntry(logger, "Yo entry")); + + Path readyPath = spooler.readyPath(); + Path readyFile1 = readyPath.resolve(spooler.fileNameBase.get() + "-0"); + waitUntilFileExists(readyFile1); + + // Check content after being moved to ready path + assertContent(readyFile1, "Yo entry"); + + // Process files (read, transport files) + logger.manualRun(); + assertEquals(1, logger.entriesSent()); + + // No files in processing or ready or successes + assertProcessedFiles(spooler, 0); + assertReadyFiles(spooler, 0); + assertSuccessFiles(spooler, 0); + assertFailureFiles(spooler, 0); + + assertTrue(spooler.failures().isEmpty(), spooler.failures().toString()); + } + @Test public void testSpoolingManyEntriesPerFile() throws IOException { Path spoolDir = tempDir.resolve("spool"); -- cgit v1.2.3