From 73bb333fe2728603717ced0dc944c91febf88486 Mon Sep 17 00:00:00 2001 From: Jonathan Cobb Date: Fri, 7 Feb 2020 20:16:16 -0500 Subject: [PATCH] adjust for better support of chunked streaming --- src/main/java/org/cobbzilla/util/daemon/ZillaRuntime.java | 2 ++ src/main/java/org/cobbzilla/util/io/multi/MultiStream.java | 3 +++ .../java/org/cobbzilla/util/io/regex/RegexChunkStreamer.java | 5 +++-- .../java/org/cobbzilla/util/io/regex/RegexFilterReader.java | 2 +- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/cobbzilla/util/daemon/ZillaRuntime.java b/src/main/java/org/cobbzilla/util/daemon/ZillaRuntime.java index 4b964b8..64fae69 100644 --- a/src/main/java/org/cobbzilla/util/daemon/ZillaRuntime.java +++ b/src/main/java/org/cobbzilla/util/daemon/ZillaRuntime.java @@ -37,6 +37,7 @@ import static org.cobbzilla.util.io.FileUtil.abs; import static org.cobbzilla.util.io.FileUtil.list; import static org.cobbzilla.util.reflect.ReflectionUtil.instantiate; import static org.cobbzilla.util.security.ShaUtil.sha256_hex; +import static org.cobbzilla.util.string.StringUtil.ellipsis; import static org.cobbzilla.util.string.StringUtil.truncate; import static org.cobbzilla.util.system.Sleep.sleep; import static org.cobbzilla.util.time.TimeUtil.formatDuration; @@ -416,6 +417,7 @@ public class ZillaRuntime { } public static String stacktrace() { return getStackTrace(new Exception()); } + public static String shortStacktrace(int max) { return ellipsis(stacktrace(), max); } private static final AtomicLong selfDestructInitiated = new AtomicLong(-1); public static void setSelfDestruct (long t) { setSelfDestruct(t, 0); } diff --git a/src/main/java/org/cobbzilla/util/io/multi/MultiStream.java b/src/main/java/org/cobbzilla/util/io/multi/MultiStream.java index b07eb36..a8c0054 100644 --- a/src/main/java/org/cobbzilla/util/io/multi/MultiStream.java +++ b/src/main/java/org/cobbzilla/util/io/multi/MultiStream.java @@ -7,6 +7,8 @@ import java.io.InputStream; import java.util.ArrayList; import java.util.List; +import static org.cobbzilla.util.daemon.ZillaRuntime.stacktrace; + @Slf4j public class MultiStream extends InputStream { @@ -67,6 +69,7 @@ public class MultiStream extends InputStream { } @Override public int read(byte[] buf, int off, int len) throws IOException { + if (log.isTraceEnabled()) log.trace("read(byte[]): trying to read "+len+" bytes. this="+this+", from="+stacktrace()); final int count = currentStream.read(buf, off, len); if (count == -1) { if (streamIndex == streams.size()-1) { diff --git a/src/main/java/org/cobbzilla/util/io/regex/RegexChunkStreamer.java b/src/main/java/org/cobbzilla/util/io/regex/RegexChunkStreamer.java index cd6524b..d62fbbf 100644 --- a/src/main/java/org/cobbzilla/util/io/regex/RegexChunkStreamer.java +++ b/src/main/java/org/cobbzilla/util/io/regex/RegexChunkStreamer.java @@ -102,9 +102,10 @@ public class RegexChunkStreamer { addChunk(chunk); } if (chunks.isEmpty()) { - // we found nothing, so the whole buffer is the entire thing + // we found nothing, so the whole buffer is the entire thing, and it's partial so we + // can re-evaluate when there is more data addChunk(new RegexChunk() - .setType(RegexChunkType.content) + .setPartial(true) .setData(buffer.toString())); } else { // add any remainder as the footer diff --git a/src/main/java/org/cobbzilla/util/io/regex/RegexFilterReader.java b/src/main/java/org/cobbzilla/util/io/regex/RegexFilterReader.java index 27cee7d..f84e487 100644 --- a/src/main/java/org/cobbzilla/util/io/regex/RegexFilterReader.java +++ b/src/main/java/org/cobbzilla/util/io/regex/RegexFilterReader.java @@ -18,7 +18,7 @@ import static org.cobbzilla.util.string.StringUtil.UTF8cs; @Slf4j @Accessors(chain=true) public class RegexFilterReader extends BufferedReader { - public static final int DEFAULT_BUFFER_SIZE = (int) (64 * Bytes.KB); + public static final int DEFAULT_BUFFER_SIZE = (int) (8 * Bytes.KB); private final int bufsiz; private RegexStreamFilter filter;