Brandon DeVries created NIFI-4856: ------------------------------------- Summary: ByteCountingInputStream should override available() Key: NIFI-4856 URL: https://issues.apache.org/jira/browse/NIFI-4856 Project: Apache NiFi Issue Type: Bug Affects Versions: 1.5.0 Reporter: Brandon DeVries
ByteCountingInputStream [1] does not override the InputStream.available() method as indicated in the InputStream javadocs [2]. In 0.x[3] there was another implementation of ByteCountingInputStream that correctly overrode available(). However, this was replaced with the incorrect version in 1.x. This causes any processor that attempts to use the available() method of the InputStream returned from ProcessSession.read() to erroneously believe it has reached the end of the stream, as this method is supposed to return "an estimate of the number of bytes that can be read (or skipped over) from this input stream without blocking *or {{0}} when it reaches the end* of the input stream." The following method needs to be added: {code:java} @Override public int available() throws IOException { return in.available(); }{code} [1] [https://github.com/apache/nifi/blob/rel/nifi-1.5.0/nifi-commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/ByteCountingInputStream.java] [2] [https://docs.oracle.com/javase/8/docs/api/index.html] [3] [https://github.com/apache/nifi/blob/0.x/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/repository/io/ByteCountingInputStream.java] -- This message was sent by Atlassian JIRA (v7.6.3#76005)