summaryrefslogtreecommitdiffstats
path: root/container-core/src/main/java/com/yahoo/container/handler
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-08-04 09:51:26 +0200
committerGitHub <noreply@github.com>2020-08-04 09:51:26 +0200
commit6c6a10377d7d9ef5597b534076cdee9ee72bc653 (patch)
treecb283dd487c82fb247f920bc2fc9f1544031c56f /container-core/src/main/java/com/yahoo/container/handler
parenta0a8d7019cfb035b000c616c22c0589ce4ee0986 (diff)
parenteb039ff41f1e612f7012af81950255933f2671b8 (diff)
Merge branch 'master' into bjorncs/container-thread-pool
Diffstat (limited to 'container-core/src/main/java/com/yahoo/container/handler')
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/LogHandler.java4
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/LogReader.java12
2 files changed, 12 insertions, 4 deletions
diff --git a/container-core/src/main/java/com/yahoo/container/handler/LogHandler.java b/container-core/src/main/java/com/yahoo/container/handler/LogHandler.java
index f3149ed4998..b2a156862eb 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/LogHandler.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/LogHandler.java
@@ -35,11 +35,13 @@ public class LogHandler extends ThreadedHttpRequestHandler {
Instant to = Optional.ofNullable(request.getProperty("to"))
.map(Long::valueOf).map(Instant::ofEpochMilli).orElse(Instant.MAX);
+ Optional<String> hostname = Optional.ofNullable(request.getProperty("hostname"));
+
return new HttpResponse(200) {
@Override
public void render(OutputStream outputStream) {
try {
- logReader.writeLogs(outputStream, from, to);
+ logReader.writeLogs(outputStream, from, to, hostname);
}
catch (Throwable t) {
log.log(Level.WARNING, "Failed reading logs from " + from + " to " + to, t);
diff --git a/container-core/src/main/java/com/yahoo/container/handler/LogReader.java b/container-core/src/main/java/com/yahoo/container/handler/LogReader.java
index 3cf849a6835..8e4b9aea9b8 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/LogReader.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/LogReader.java
@@ -27,6 +27,7 @@ import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
+import java.util.Optional;
import java.util.TreeMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -57,7 +58,7 @@ class LogReader {
this.logFilePattern = logFilePattern;
}
- void writeLogs(OutputStream out, Instant from, Instant to) {
+ void writeLogs(OutputStream out, Instant from, Instant to, Optional<String> hostname) {
double fromSeconds = from.getEpochSecond() + from.getNano() / 1e9;
double toSeconds = to.getEpochSecond() + to.getNano() / 1e9;
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out));
@@ -67,7 +68,7 @@ class LogReader {
try {
// Logs in each sub-list contain entries covering the same time interval, so do a merge sort while reading
for (Path log : logs)
- logLineIterators.add(new LogLineIterator(log, fromSeconds, toSeconds));
+ logLineIterators.add(new LogLineIterator(log, fromSeconds, toSeconds, hostname));
Iterator<LineWithTimestamp> lines = Iterators.mergeSorted(logLineIterators,
Comparator.comparingDouble(LineWithTimestamp::timestamp));
@@ -96,14 +97,16 @@ class LogReader {
private final BufferedReader reader;
private final double from;
private final double to;
+ private final Optional<String> hostname;
private LineWithTimestamp next;
- private LogLineIterator(Path log, double from, double to) throws IOException {
+ private LogLineIterator(Path log, double from, double to, Optional<String> hostname) throws IOException {
boolean zipped = log.toString().endsWith(".gz");
InputStream in = Files.newInputStream(log);
this.reader = new BufferedReader(new InputStreamReader(zipped ? new GZIPInputStream(in) : in, UTF_8));
this.from = from;
this.to = to;
+ this.hostname = hostname;
this.next = readNext();
}
@@ -131,6 +134,9 @@ class LogReader {
if (parts.length != 7)
continue;
+ if (hostname.map(host -> !host.equals(parts[1])).orElse(false))
+ continue;
+
double timestamp = Double.parseDouble(parts[0]);
if (timestamp > to)
return null;