aboutsummaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/search
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2022-10-06 07:58:48 +0200
committerHarald Musum <musum@yahooinc.com>2022-10-06 07:58:48 +0200
commit9b291caa34a2b61be45e63d5bb539c136df616e0 (patch)
tree464877d718b4c14d90fa8e39000cffb6c35b6617 /container-search/src/main/java/com/yahoo/search
parentb61e190f896f217f54a71e14b33b0589b8d87a32 (diff)
Make transport return a boolean and use a function when processing files
Diffstat (limited to 'container-search/src/main/java/com/yahoo/search')
-rw-r--r--container-search/src/main/java/com/yahoo/search/logging/AbstractSpoolingLogger.java4
-rw-r--r--container-search/src/main/java/com/yahoo/search/logging/AbstractThreadedLogger.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/logging/LocalDiskLogger.java6
-rw-r--r--container-search/src/main/java/com/yahoo/search/logging/Spooler.java30
4 files changed, 19 insertions, 23 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 5cb3aa24f98..3db854a6888 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
@@ -35,9 +35,7 @@ abstract class AbstractSpoolingLogger extends AbstractThreadedLogger implements
public void run() {
try {
- var entries = spooler.processFiles();
- log.log(Level.INFO, "Entries: " + entries.size());
- entries.forEach(this::transport);
+ spooler.processFiles(this::transport);
} catch (IOException e) {
e.printStackTrace();
}
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 1df236a037f..17895a9ce57 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
@@ -53,7 +53,7 @@ abstract class AbstractThreadedLogger implements Logger {
/**
* Actually transports the entry to it's destination
*/
- abstract void transport(LoggerEntry entry);
+ abstract boolean transport(LoggerEntry entry);
private static class WorkerThread extends Thread {
diff --git a/container-search/src/main/java/com/yahoo/search/logging/LocalDiskLogger.java b/container-search/src/main/java/com/yahoo/search/logging/LocalDiskLogger.java
index 6d815059066..f5d8c31be5d 100644
--- a/container-search/src/main/java/com/yahoo/search/logging/LocalDiskLogger.java
+++ b/container-search/src/main/java/com/yahoo/search/logging/LocalDiskLogger.java
@@ -7,20 +7,22 @@ import java.io.IOException;
public class LocalDiskLogger extends AbstractThreadedLogger {
- private String logFilePath;
+ private final String logFilePath;
public LocalDiskLogger(LocalDiskLoggerConfig config) {
logFilePath = config.path();
}
@Override
- void transport(LoggerEntry entry) {
+ boolean transport(LoggerEntry entry) {
String json = entry.toJson();
try (FileWriter fw = new FileWriter(logFilePath, true)) {
fw.write(json);
fw.write(System.getProperty("line.separator"));
+ return true;
} catch (IOException e) {
e.printStackTrace();
+ return false;
}
}
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 8fa51a0b47c..0b50985d974 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
@@ -14,6 +14,7 @@ import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
+import java.util.function.Function;
import java.util.logging.Level;
import java.util.stream.Stream;
@@ -46,32 +47,27 @@ public class Spooler {
createDirs(spoolPath);
}
- public boolean write(LoggerEntry entry) {
+ void write(LoggerEntry entry) {
writeEntry(entry);
-
- return true;
}
- public List<LoggerEntry> processFiles() throws IOException {
+ public void processFiles(Function<LoggerEntry, Boolean> transport) throws IOException {
List<Path> files = listFilesInPath(readyPath);
-
if (files.size() == 0) {
log.log(Level.INFO, "No files in ready path " + readyPath.toFile().getAbsolutePath());
- return List.of();
+ return;
}
log.log(Level.FINE, "Files in ready path: " + files.size());
List<File> fileList = getFiles(files, 50); // TODO
if ( ! fileList.isEmpty()) {
- return processFiles(fileList);
+ processFiles(fileList, transport);
}
- return List.of();
}
List<Path> listFilesInPath(Path path) throws IOException {
List<Path> files;
- System.out.println("Path " + path + " exists: " + path.toFile().exists());
try (Stream<Path> stream = Files.list(path)) {
files = stream.toList();
// TODO: Or check if stream is empty
@@ -81,18 +77,18 @@ public class Spooler {
return files;
}
- public ArrayList<LoggerEntry> processFiles(List<File> files) throws IOException {
- ArrayList<LoggerEntry> entries = new ArrayList<>();
+ public void processFiles(List<File> files, Function<LoggerEntry, Boolean> transport) throws IOException {
for (File f : files) {
log.log(Level.INFO, "Found file " + f);
var content = Files.readAllBytes(f.toPath());
var entry = LoggerEntry.fromJson(content);
- Path file = f.toPath();
- Path target = spoolPath.resolve(successesPath).resolve(f.toPath().relativize(file)).resolve(f.getName());
- Files.move(file, target);
- entries.add(entry);
+
+ if (transport.apply(entry)) {
+ Path file = f.toPath();
+ Path target = spoolPath.resolve(successesPath).resolve(f.toPath().relativize(file)).resolve(f.getName());
+ Files.move(file, target);
+ }
}
- return entries;
}
public Path processingPath() { return processingPath; }
@@ -159,7 +155,7 @@ public class Spooler {
if (file.exists() && file.canRead() && file.canWrite()) {
log.log(Level.INFO, "Directory " + path + " already exists");
} else if (file.mkdirs()) {
- log.log(Level.INFO, "Created " + path);
+ log.log(Level.FINE, "Created " + path);
} else {
log.log(Level.WARNING, "Could not create " + path + ", please check permissions");
}