Author: markt
Date: Tue Feb 23 23:44:21 2010
New Revision: 915592

URL: http://svn.apache.org/viewvc?rev=915592&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=48694
Avoid potential deadlock in WebappClassLoader

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=915592&r1=915591&r2=915592&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/STATUS.txt (original)
+++ tomcat/tc6.0.x/trunk/STATUS.txt Tue Feb 23 23:44:21 2010
@@ -119,19 +119,6 @@
     http://tools.ietf.org/html/rfc2616
 
 
-* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=48694
-  Avoid potential deadlock in WebappClassLoader
-  OP confirms patch fixes the deadlock
-  https://issues.apache.org/bugzilla/show_bug.cgi?id=48694#c1
-  +1: markt, jfclere, kkolinko
-  -1: 
-   kkolinko: Looking at how URLClassLoader.findClass() is implemented, I
-   think that concurrent access to WebappClassLoader.findClass() should not
-   be allowed.  URLClassLoader.findClass() is a protected method, but it is
-   public in URLClassLoader.  I think we should change its access qualifier
-   to be 'protected' in TC7.
-
-
 * Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=48716
   Provide an undocumented 'shoot yourself in the foot' option to disable the
   JULI logging reset on context stop

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=915592&r1=915591&r2=915592&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 
Tue Feb 23 23:44:21 2010
@@ -992,9 +992,7 @@
             }
             if ((clazz == null) && hasExternalRepositories) {
                 try {
-                    synchronized (this) {
-                        clazz = super.findClass(name);
-                    }
+                    clazz = super.findClass(name);
                 } catch(AccessControlException ace) {
                     log.warn("WebappClassLoader.findClassInternal(" + name
                             + ") security exception: " + ace.getMessage(), 
ace);
@@ -2330,7 +2328,7 @@
         if (clazz != null)
             return clazz;
 
-        synchronized (this) {
+        synchronized (name.intern()) {
             clazz = entry.loadedClass;
             if (clazz != 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=915592&r1=915591&r2=915592&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Tue Feb 23 23:44:21 2010
@@ -87,6 +87,10 @@
         <code>org.apache.catalina.startup.Catalina</code>. (markt)
       </fix>
       <fix>
+        <bug>48694</bug>: Remove potential deadlock in web application class
+        loader. (markt)
+      </fix>
+      <fix>
         <bug>48726</bug>: Prevent OOME when uploading large WAR files with the
         deployer. Patch provided by adam. (markt)
       </fix>



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to