diff options
author | Valerij Fredriksen <freva@users.noreply.github.com> | 2020-06-12 12:27:51 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-12 12:27:51 +0200 |
commit | cdbf81bec26eaae36e40d56cb4dd072e39392943 (patch) | |
tree | 31fcca9168456bbf288ebce70cefa46d5b5bb672 | |
parent | a7b28d8937fc3f8d28418dc278bb1e4d25b8ad21 (diff) | |
parent | 153813c0969f821c869689ebaebef589b6af118c (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.java | 19 | ||||
-rw-r--r-- | container-core/src/test/java/com/yahoo/container/handler/LogReaderTest.java | 14 |
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 { |