AdoptOpenJDK / openjdk-jdk8u

JDK8u mirror from mercurial
http://hg.openjdk.java.net/jdk8u/jdk8u/
GNU General Public License v2.0
373 stars 286 forks source link

Fix 8173620 by handling InvocationTargetException separately and expose underlying implementation exceptions as IOException instead of Errors. #4

Closed precoder closed 5 years ago

precoder commented 5 years ago

Hello,

Changes I am sending are targeting an existing JDK Bug documented here: https://bugs.openjdk.java.net/browse/JDK-8173620

I have added the RuntimeExceptions as well since we have seen already stack traces such as following in case of HTTP PROXY returns an invalid answer. The stack trace is created by accessing to an FTP Server over HTTP PROXY, where HTTP PROXY returns an invalid response:

java.lang.InternalError: Should not reach here
    at java.net.HttpConnectSocketImpl.doTunneling(HttpConnectSocketImpl.java:181)
    at java.net.HttpConnectSocketImpl.doTunnel(HttpConnectSocketImpl.java:168)
    at java.net.HttpConnectSocketImpl.access$200(HttpConnectSocketImpl.java:44)
    at java.net.HttpConnectSocketImpl$2.run(HttpConnectSocketImpl.java:151)
    at java.net.HttpConnectSocketImpl$2.run(HttpConnectSocketImpl.java:149)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.HttpConnectSocketImpl.privilegedDoTunnel(HttpConnectSocketImpl.java:148)
    at java.net.HttpConnectSocketImpl.connect(HttpConnectSocketImpl.java:111)
    at java.net.Socket.connect(Socket.java:589)
    at org.apache.commons.net.SocketClient._connect(SocketClient.java:243)
    at org.apache.commons.net.SocketClient.connect(SocketClient.java:202)
    ... some application code...
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.reflect.InvocationTargetException: null
    at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at java.net.HttpConnectSocketImpl.doTunneling(HttpConnectSocketImpl.java:179)
    ... 23 common frames omitted
Caused by: java.util.NoSuchElementException: null
    at java.util.StringTokenizer.nextToken(StringTokenizer.java:349)
    at sun.net.www.protocol.http.HttpURLConnection.doTunneling(HttpURLConnection.java:2072)
    ... 27 common frames omitted
karianna commented 5 years ago

This was fixed upstream