On 19/03/2013 17:43, Chris Hegarty wrote:
JarFileFactory has two Maps that it uses to implement caching of jar
files. Access to these maps should always be done while holding the
instance lock, as multiple threads can be simultaneously updating the
maps.
The close() method was added some time after the original
implementation, and it looks like the locking was forgotten. Also, the
locking strategy assumes that JarFileFactory is a singleton. It should
be reworked to make it more robust. There is much more cleanup that
can be done here, and I intend to do it as a separate bug, so as not
to confuse the specifics of this issue.
http://cr.openjdk.java.net/~chegar/8010282/webrev.00/webrev/
-Chris.
I assume JarURLConnection.factory can be final.
For getCachedJarFile then you could use "assert
Thread.holdsLock(instance)" in preference to the comment.
Otherwise looks okay to me.
-Alan.