Author: markt Date: Wed Jan 14 16:26:00 2009 New Revision: 734579 URL: http://svn.apache.org/viewvc?rev=734579&view=rev Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=37458 Correct sync issue that leads to NPE in rare circumstances Patch provided by Konstantin Kolinko
Modified: tomcat/tc6.0.x/trunk/STATUS.txt tomcat/tc6.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoader.java tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Modified: tomcat/tc6.0.x/trunk/STATUS.txt URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/STATUS.txt?rev=734579&r1=734578&r2=734579&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/STATUS.txt (original) +++ tomcat/tc6.0.x/trunk/STATUS.txt Wed Jan 14 16:26:00 2009 @@ -158,13 +158,6 @@ markt - TCK passes -1: -* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=37458 - Correct sync issue that leads to NPE in rare circumstances - Patch provided by Konstantin Kolinko - http://svn.apache.org/viewvc?rev=730735&view=rev - +1: markt, fhanik, funkman - -1: - * Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=46471 Use jar url and tag file path to uniquely ID a tag file to prevent naming clashes Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoader.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoader.java?rev=734579&r1=734578&r2=734579&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoader.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoader.java Wed Jan 14 16:26:00 2009 @@ -1793,7 +1793,11 @@ return clazz; synchronized (this) { - if (entry.binaryContent == null && entry.loadedClass == null) + clazz = entry.loadedClass; + if (clazz != null) + return clazz; + + if (entry.binaryContent == null) throw new ClassNotFoundException(name); // Looking up the package @@ -1842,26 +1846,22 @@ } - if (entry.loadedClass == null) { - try { - clazz = defineClass(name, entry.binaryContent, 0, - entry.binaryContent.length, - new CodeSource(entry.codeBase, entry.certificates)); - } catch (UnsupportedClassVersionError ucve) { - throw new UnsupportedClassVersionError( - ucve.getLocalizedMessage() + " " + - sm.getString("webappClassLoader.wrongVersion", - name)); - } - entry.loadedClass = clazz; - entry.binaryContent = null; - entry.source = null; - entry.codeBase = null; - entry.manifest = null; - entry.certificates = null; - } else { - clazz = entry.loadedClass; - } + try { + clazz = defineClass(name, entry.binaryContent, 0, + entry.binaryContent.length, + new CodeSource(entry.codeBase, entry.certificates)); + } catch (UnsupportedClassVersionError ucve) { + throw new UnsupportedClassVersionError( + ucve.getLocalizedMessage() + " " + + sm.getString("webappClassLoader.wrongVersion", + name)); + } + entry.loadedClass = clazz; + entry.binaryContent = null; + entry.source = null; + entry.codeBase = null; + entry.manifest = null; + entry.certificates = null; } return clazz; Modified: tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml?rev=734579&r1=734578&r2=734579&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml (original) +++ tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Wed Jan 14 16:26:00 2009 @@ -36,6 +36,10 @@ <subsection name="Catalina"> <changelog> <fix> + <bug>37458</bug>: Correct sync issue that leads to NPE in rare + circumstances. Patch provided by Konstantin Kolinko. (markt) + </fix> + <fix> <bug>42747</bug>: Ensure context.xml takes effect on first deployment for WAR and DIR deployments. context.xml is now copied to CATALINA_BASE/<engine name>/<host name> for DIR as well as --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org