aboutsummaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2023-06-07 13:19:46 +0200
committerHarald Musum <musum@yahooinc.com>2023-06-07 13:19:46 +0200
commit6fee0e0450584651e0e6134fcdce1914f7798e6e (patch)
treed8040a6a2283a1fdb77df57268a5c495b73785e3 /container-search
parent4bce89ccfa67b4e920d5c9b4f6c15bbab884a16b (diff)
Delete spooler file when entries sent successfully
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/search/logging/AbstractSpoolingLogger.java3
-rw-r--r--container-search/src/main/java/com/yahoo/search/logging/Spooler.java11
-rw-r--r--container-search/src/test/java/com/yahoo/search/logging/SpoolerTest.java29
3 files changed, 40 insertions, 3 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 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
@@ -57,6 +57,35 @@ public class SpoolerTest {
}
@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");