Why does the inReady method of StreamDecoder swallow IOException?

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