aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2023-02-03 19:57:41 +0100
committerGitHub <noreply@github.com>2023-02-03 19:57:41 +0100
commit1697aab52283cef8bc71530460d543ea5e2f52eb (patch)
tree6ceb3f994852a8bc8b7a2418a6947617f78e0f88
parentdd3f8501c791ff12032046907688c8f3e960cdd3 (diff)
parent83bd7804654aff81692e322325592002a68c2949 (diff)
Merge pull request #25864 from vespa-engine/hmusum/add-flag-for-keeping-success-files
Add flag deciding if we should keep success files
-rw-r--r--container-search/src/main/java/com/yahoo/search/logging/Spooler.java12
-rw-r--r--container-search/src/test/java/com/yahoo/search/logging/SpoolerTest.java19
2 files changed, 25 insertions, 6 deletions
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 c4fe858dffc..46f7fbb0b3c 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
@@ -52,16 +52,22 @@ public class Spooler {
private final int maxEntriesPerFile;
private final Clock clock;
private final AtomicReference<Instant> firstWriteTimestamp = new AtomicReference<>();
+ private final boolean keepSuccessFiles;
public Spooler(Clock clock) {
- this(defaultSpoolPath, defaultMaxEntriesPerFile, clock);
+ this(clock, false);
}
- public Spooler(Path spoolPath, int maxEntriesPerFile, Clock clock) {
+ public Spooler(Clock clock, boolean keepSuccessFiles) {
+ this(defaultSpoolPath, defaultMaxEntriesPerFile, clock, keepSuccessFiles);
+ }
+
+ public Spooler(Path spoolPath, int maxEntriesPerFile, Clock clock, boolean keepSuccessFiles) {
this.spoolPath = spoolPath;
this.maxEntriesPerFile = maxEntriesPerFile;
this.clock = clock;
this.fileNameBase.set(newFileNameBase(clock));
+ this.keepSuccessFiles = keepSuccessFiles;
firstWriteTimestamp.set(Instant.EPOCH);
createDirs(spoolPath);
}
@@ -114,7 +120,7 @@ public class Spooler {
throw new UncheckedIOException("Unable to process file " + f.toPath(), e);
// TODO: Move to failures path
} finally {
- if (succcess) {
+ if (succcess && keepSuccessFiles) {
Path file = f.toPath();
Path target = spoolPath.resolve(successesPath).resolve(f.toPath().relativize(file)).resolve(f.getName());
try {
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 bfcf3b5e3e5..eb5d7f85481 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
@@ -28,7 +28,7 @@ public class SpoolerTest {
Path spoolDir = tempDir.resolve("spool");
int maxEntriesPerFile = 1;
- Spooler spooler = new Spooler(spoolDir, maxEntriesPerFile, clock);
+ Spooler spooler = new Spooler(spoolDir, maxEntriesPerFile, clock, true);
TestLogger logger = new TestLogger(spooler);
assertTrue(sendEntry(logger, "Yo entry"));
@@ -60,7 +60,7 @@ public class SpoolerTest {
Path spoolDir = tempDir.resolve("spool");
int maxEntriesPerFile = 2;
- Spooler spooler = new Spooler(spoolDir, maxEntriesPerFile, clock);
+ Spooler spooler = new Spooler(spoolDir, maxEntriesPerFile, clock, true);
TestLogger logger = new TestLogger(spooler);
assertTrue(sendEntry(logger, "Yo entry"));
@@ -111,7 +111,7 @@ public class SpoolerTest {
@Test
public void failingToTransportIsRetried() throws IOException {
Path spoolDir = tempDir.resolve("spool");
- Spooler spooler = new Spooler(spoolDir, 1, clock);
+ Spooler spooler = new Spooler(spoolDir, 1, clock, true);
FailingToTransportSecondEntryLogger logger = new FailingToTransportSecondEntryLogger(spooler);
assertTrue(sendEntry(logger, "Yo entry"));
@@ -126,6 +126,19 @@ public class SpoolerTest {
assertEquals(2, spooler.listFilesInPath(spooler.successesPath()).size());
}
+ @Test
+ public void noSuccessFiles() throws IOException {
+ Path spoolDir = tempDir.resolve("spool");
+ boolean keepSuccessFiles = false;
+ Spooler spooler = new Spooler(spoolDir, 1, clock, keepSuccessFiles);
+ FailingToTransportSecondEntryLogger logger = new FailingToTransportSecondEntryLogger(spooler);
+
+ assertTrue(sendEntry(logger, "Yo entry"));
+ logger.manualRun(); // Success for first message
+ assertEquals(0, spooler.listFilesInPath(spooler.successesPath()).size());
+ }
+
+
private boolean sendEntry(Logger logger, String x) {
return logger.newEntry()
.blob(x.getBytes())