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)