This is an automated email from the ASF dual-hosted git repository. mblow pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/asterixdb.git
commit efef0919bb1a6cefbce2869ca9ce53fc04cdf77d Author: Wail Alkowaileet <[email protected]> AuthorDate: Thu Apr 16 13:06:01 2020 -0700 [ASTERIXDB-2712][EXT] Fix ByteBuffer limit when read more data - user model changes: no - storage format changes: no - interface changes: no Details: - When reading more data, ensure the limit is set to capacity. - Log RuntimeExceptions in SocketServerInputStream Change-Id: I7ed572ce90c64b145abef6eb0e4dc0e788f2667e Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/5724 Reviewed-by: Ian Maxon <[email protected]> Integration-Tests: Jenkins <[email protected]> Tested-by: Jenkins <[email protected]> --- .../asterix/external/input/stream/AsterixInputStreamReader.java | 4 +++- .../asterix/external/input/stream/SocketServerInputStream.java | 5 +++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/stream/AsterixInputStreamReader.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/stream/AsterixInputStreamReader.java index 8e166c0..d35ad26 100644 --- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/stream/AsterixInputStreamReader.java +++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/stream/AsterixInputStreamReader.java @@ -68,7 +68,7 @@ public class AsterixInputStreamReader extends Reader { } @Override - public int read(char cbuf[], int offset, int length) throws IOException { + public int read(char[] cbuf, int offset, int length) throws IOException { if (done) { return -1; } @@ -84,7 +84,9 @@ public class AsterixInputStreamReader extends Reader { } else { // need to read more data System.arraycopy(bytes, byteBuffer.position(), bytes, 0, byteBuffer.remaining()); + len = 0; // reset to read more bytes byteBuffer.position(byteBuffer.remaining()); + byteBuffer.limit(byteBuffer.capacity()); //set limit to capacity for the new bytes while (len == 0) { len = in.read(bytes, byteBuffer.position(), bytes.length - byteBuffer.position()); } diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/stream/SocketServerInputStream.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/stream/SocketServerInputStream.java index fb9a4a6..0fe81cd 100644 --- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/stream/SocketServerInputStream.java +++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/stream/SocketServerInputStream.java @@ -137,6 +137,11 @@ public class SocketServerInputStream extends AsterixInputStream { @Override public boolean handleException(Throwable th) { + if (th instanceof RuntimeException) { + //Log runtime exception + //TODO Should we continue anyway? + LOGGER.error("Encountered an unexpected error", th); + } try { return accept(); } catch (IOException e) {
