summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorValerij Fredriksen <freva@users.noreply.github.com>2020-06-12 12:27:51 +0200
committerGitHub <noreply@github.com>2020-06-12 12:27:51 +0200
commitcdbf81bec26eaae36e40d56cb4dd072e39392943 (patch)
tree31fcca9168456bbf288ebce70cefa46d5b5bb672
parenta7b28d8937fc3f8d28418dc278bb1e4d25b8ad21 (diff)
parent153813c0969f821c869689ebaebef589b6af118c (diff)
Merge pull request #13564 from vespa-engine/jonmv/log-server-handler-fix
Jonmv/log server handler fix
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/LogReader.java19
-rw-r--r--container-core/src/test/java/com/yahoo/container/handler/LogReaderTest.java14
2 files changed, 16 insertions, 17 deletions
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 e3fef4e0e44..ff1a7313540 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
@@ -82,10 +82,13 @@ class LogReader {
else
inProxy = in;
- // At the point when logs switch to un-zipped, replace the output stream with a zipping proxy.
- if ( ! zipped && ! (outputStream instanceof GZIPOutputStream))
- outputStream = new GZIPOutputStream(outputStream);
-
+ if ( ! zipped) {
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ try (OutputStream outProxy = new GZIPOutputStream(buffer)) {
+ inProxy.transferTo(outProxy);
+ }
+ inProxy = new ByteArrayInputStream(buffer.toByteArray());
+ }
inProxy.transferTo(outputStream);
}
}
@@ -93,14 +96,6 @@ class LogReader {
catch (IOException e) {
throw new UncheckedIOException(e);
}
- finally {
- try {
- outputStream.close();
- }
- catch (IOException e) {
- throw new UncheckedIOException(e);
- }
- }
}
/** Returns log files which may have relevant entries, sorted by modification time — the first and last must be filtered. */
diff --git a/container-core/src/test/java/com/yahoo/container/handler/LogReaderTest.java b/container-core/src/test/java/com/yahoo/container/handler/LogReaderTest.java
index c68facf4f01..c5ddfe898b9 100644
--- a/container-core/src/test/java/com/yahoo/container/handler/LogReaderTest.java
+++ b/container-core/src/test/java/com/yahoo/container/handler/LogReaderTest.java
@@ -27,7 +27,8 @@ public class LogReaderTest {
private final Path logDirectory = fileSystem.getPath("/opt/vespa/logs");
private static final String log1 = "0.1\t17491290-v6-1.ostk.bm2.prod.ne1.yahoo.com\t5480\tcontainer\tstdout\tinfo\tERROR: Bundle canary-application [71] Unable to get module class path. (java.lang.NullPointerException)\n";
- private static final String log2 = "0.2\t17491290-v6-1.ostk.bm2.prod.ne1.yahoo.com\t5480\tcontainer\tstderr\twarning\tjava.lang.NullPointerException\\n\\tat org.apache.felix.framework.BundleRevisionImpl.calculateContentPath(BundleRevisionImpl.java:438)\\n\\tat org.apache.felix.framework.BundleRevisionImpl.initializeContentPath(BundleRevisionImpl.java:371)\n";
+ private static final String log2 = "0.15\t17491290-v6-1.ostk.bm2.prod.ne1.yahoo.com\t5480\tcontainer\tstderr\twarning\twarning\n";
+ private static final String log3 = "0.2\t17491290-v6-1.ostk.bm2.prod.ne1.yahoo.com\t5480\tcontainer\tstderr\twarning\tjava.lang.NullPointerException\\n\\tat org.apache.felix.framework.BundleRevisionImpl.calculateContentPath(BundleRevisionImpl.java:438)\\n\\tat org.apache.felix.framework.BundleRevisionImpl.initializeContentPath(BundleRevisionImpl.java:371)\n";
@Before
public void setup() throws IOException {
@@ -37,7 +38,10 @@ public class LogReaderTest {
Files.write(logDirectory.resolve("log1.log.gz"), compress(log1)),
FileTime.from(Instant.ofEpochMilli(123)));
Files.setLastModifiedTime(
- Files.write(logDirectory.resolve("subfolder/log2.log"), log2.getBytes(UTF_8)),
+ Files.write(logDirectory.resolve("subfolder/log2.log.gz"), compress(log2)),
+ FileTime.from(Instant.ofEpochMilli(180)));
+ Files.setLastModifiedTime(
+ Files.write(logDirectory.resolve("subfolder/log3.log"), log3.getBytes(UTF_8)),
FileTime.from(Instant.ofEpochMilli(234)));
}
@@ -54,10 +58,10 @@ public class LogReaderTest {
@Test
public void testThatLogsNotMatchingRegexAreExcluded() throws Exception {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
- LogReader logReader = new LogReader(logDirectory, Pattern.compile(".*2\\.log"));
+ LogReader logReader = new LogReader(logDirectory, Pattern.compile(".*3\\.log"));
logReader.writeLogs(baos, Instant.ofEpochMilli(0), Instant.ofEpochMilli(300));
- assertEquals(log2, decompress(baos.toByteArray()));
+ assertEquals(log3, decompress(baos.toByteArray()));
}
@Test
@@ -66,7 +70,7 @@ public class LogReaderTest {
LogReader logReader = new LogReader(logDirectory, Pattern.compile(".*"));
logReader.writeLogs(zippedBaos, Instant.ofEpochMilli(0), Instant.ofEpochMilli(300));
- assertEquals(log1 + log2, decompress(zippedBaos.toByteArray()));
+ assertEquals(log1 + log2 + log3, decompress(zippedBaos.toByteArray()));
}
private byte[] compress(String input) throws IOException {