# HG changeset patch # User chegar # Date 1265808230 0 # Node ID de44744708a2841097f73d9eca70358924a026c5 # Parent fe435c741ec81194c7b4110508f145603bc663b1 6693244: Java Web Start app fails on 6u10 beta w/ AssertionError in AuthenticationInfo.requestCompleted Reviewed-by: michaelm diff -r fe435c741ec8 -r de44744708a2 jdk/src/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java --- a/jdk/src/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java Mon Feb 08 23:02:28 2010 -0800 +++ b/jdk/src/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java Wed Feb 10 13:23:50 2010 +0000 @@ -111,7 +111,7 @@ * at the same time, then all but the first will block until * the first completes its authentication. */ - static private HashMap requests = new HashMap (); + static private HashMap requests = new HashMap<>(); /* check if a request for this destination is in progress * return false immediately if not. Otherwise block until @@ -125,7 +125,7 @@ synchronized (requests) { Thread t, c; c = Thread.currentThread(); - if ((t=(Thread)requests.get(key))==null) { + if ((t = requests.get(key)) == null) { requests.put (key, c); return false; } @@ -147,8 +147,11 @@ */ static private void requestCompleted (String key) { synchronized (requests) { - boolean waspresent = requests.remove (key) != null; - assert waspresent; + Thread thread = requests.get(key); + if (thread != null && thread == Thread.currentThread()) { + boolean waspresent = requests.remove(key) != null; + assert waspresent; + } requests.notifyAll(); } } diff -r fe435c741ec8 -r de44744708a2 jdk/test/ProblemList.txt --- a/jdk/test/ProblemList.txt Mon Feb 08 23:02:28 2010 -0800 +++ b/jdk/test/ProblemList.txt Wed Feb 10 13:23:50 2010 +0000 @@ -692,7 +692,6 @@ java/net/URLConnection/ZeroContentLength.java generic-all # Solaris 11 i586 fails with samevm, not sure why -java/net/Authenticator/B4769350.java generic-all java/net/HttpURLConnection/HttpResponseCode.java generic-all java/net/ResponseCache/B6181108.java generic-all java/net/ResponseCache/ResponseCacheTest.java generic-all diff -r fe435c741ec8 -r de44744708a2 jdk/test/java/net/Authenticator/B4769350.java --- a/jdk/test/java/net/Authenticator/B4769350.java Mon Feb 08 23:02:28 2010 -0800 +++ b/jdk/test/java/net/Authenticator/B4769350.java Wed Feb 10 13:23:50 2010 +0000 @@ -26,9 +26,12 @@ * @bug 4769350 * @library ../../../sun/net/www/httptest/ * @build HttpCallback HttpServer ClosedChannelList HttpTransaction AbstractCallback - * @run main B4769350 server - * @run main B4769350 proxy + * @run main/othervm B4769350 server + * @run main/othervm B4769350 proxy * @summary proxy authentication username and password caching only works in serial case + * Run in othervm since the test sets system properties that are read by the + * networking stack and cached when the HTTP handler is invoked, and previous + * tests may already have invoked the HTTP handler. */ import java.io.*;