Why does the inReady method of StreamDecoder swallow IOException? (original) (raw)

Jeff Evans jeffrey.wayne.evans at gmail.com
Wed Nov 15 23:11:37 UTC 2017


Hello,

We are dealing with an issue where an underlying exception appears to be getting swallowed by the StreamDecoder class. In particular, the Jersey client library we are using (which happens to be version 2.25.1) is throwing an IOException out of its implementation of InputStream#available

https://github.com/jersey/jersey/blob/master/core-common/src/main/java/org/glassfish/jersey/internal/util/collection/ByteBufferInputStream.java#L143

by way of calling checkThrowable

https://github.com/jersey/jersey/blob/master/core-common/src/main/java/org/glassfish/jersey/internal/util/collection/ByteBufferInputStream.java#L127

The caller of that is ultimately StreamDecoder#inReady. We are seeing the problem under Oracle JDK 1.8.0_121, but it seems the StreamDecoder code hasn't changed in a while: http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/classes/sun/nio/cs/StreamDecoder.java#l366

Is there some issue with the way the Jersey library code implementation, or potentially some issue with our code that is resulting in this exception not being propagated out from StreamDecoder? Any insight is appreciated.

Full stack trace image here: https://i.imgur.com/AuyYFAp.png



More information about the jdk-dev mailing list