OpenJDK HTTP Client Bug

Stuart Douglas sdouglas at redhat.com
Sat Mar 2 00:18:26 PST 2013


Hello everyone,

(This is my first post to this list, so I am not 100% sure if this is 
the right place).

I have run into a bug in the JDK HttpClient that was caused by a recent 
commit:

http://hg.openjdk.java.net/jdk7u/jdk7u/jdk/diff/e6dc1d9bc70b/src/share/classes/sun/net/www/http/HttpClient.java

The method sun.net.www.http.HttpClient#available() can throw 
java.net.SocketException, which can cause the creation of the HttpClient 
to fail. This will happen if there is a connection in the cache that has 
timed out and the socket has been closed.

I have attached a small patch that should resolve the problem, although 
due to its intermittent nature I have not been able to verify with 100% 
certainty.


The exception is:

Caused by: java.net.SocketException: Socket Closed
     at java.net.PlainSocketImpl.getOption(PlainSocketImpl.java:286)
     at java.net.Socket.getSoTimeout(Socket.java:1032)
     at sun.net.www.http.HttpClient.available(HttpClient.java:356)
     at sun.net.www.http.HttpClient.New(HttpClient.java:273)
     at sun.net.www.http.HttpClient.New(HttpClient.java:310)
     at 
sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:987)
     at 
sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:923)
     at 
sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:841)
     at 
sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1031)
     at 
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleHeadersTrustCaching(HTTPConduit.java:1410)


This issue also seems to affect JDK 6, and it appears that other people 
have also run into this: 
http://stackoverflow.com/questions/14270311/rather-mysterious-socketexception-with-java-1-6-on-centos-4 


I attempted to file a bug for this on the Oracle website, however as far 
as I can tell it was ignored.

Stuart



More information about the jdk7-dev mailing list