Author: kkolinko
Date: Tue Apr 20 14:53:28 2010
New Revision: 935947

URL: http://svn.apache.org/viewvc?rev=935947&view=rev
Log:
Fix http://issues.apache.org/bugzilla/show_bug.cgi?id=44041
and avoid http://issues.apache.org/bugzilla/show_bug.cgi?id=48694
Fix duplicate class definition under load. Avoid possible deadlocks.

Modified:
    tomcat/tc5.5.x/trunk/STATUS.txt
    
tomcat/tc5.5.x/trunk/container/catalina/src/share/org/apache/catalina/loader/ResourceEntry.java
    
tomcat/tc5.5.x/trunk/container/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java
    tomcat/tc5.5.x/trunk/container/webapps/docs/changelog.xml
    
tomcat/tc5.5.x/trunk/jasper/src/share/org/apache/jasper/servlet/JasperLoader.java

Modified: tomcat/tc5.5.x/trunk/STATUS.txt
URL: 
http://svn.apache.org/viewvc/tomcat/tc5.5.x/trunk/STATUS.txt?rev=935947&r1=935946&r2=935947&view=diff
==============================================================================
--- tomcat/tc5.5.x/trunk/STATUS.txt (original)
+++ tomcat/tc5.5.x/trunk/STATUS.txt Tue Apr 20 14:53:28 2010
@@ -42,19 +42,6 @@ PATCHES PROPOSED TO BACKPORT:
   +1: kkolinko, rjung
   -1:
 
-* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=44041
-  Threading issue in class loading plus fix for
-  https://issues.apache.org/bugzilla/show_bug.cgi?id=48694 a potential deadlock
-  http://people.apache.org/~markt/patches/2010-03-25-bug44041.patch
-  +1: markt, kkolinko, jfclere
-  -1: 
-
-  Mark ResourceEntry.loadedClass as volatile.
-  http://svn.apache.org/viewvc?rev=927877&view=rev
-  +1: kkolinko, markt, rjung
-  -1:
-
-
 * Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=47878
   Return 404's rather than a permanent 500 if a JSP is deleted
   Make sure first response post deletion is correct

Modified: 
tomcat/tc5.5.x/trunk/container/catalina/src/share/org/apache/catalina/loader/ResourceEntry.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc5.5.x/trunk/container/catalina/src/share/org/apache/catalina/loader/ResourceEntry.java?rev=935947&r1=935946&r2=935947&view=diff
==============================================================================
--- 
tomcat/tc5.5.x/trunk/container/catalina/src/share/org/apache/catalina/loader/ResourceEntry.java
 (original)
+++ 
tomcat/tc5.5.x/trunk/container/catalina/src/share/org/apache/catalina/loader/ResourceEntry.java
 Tue Apr 20 14:53:28 2010
@@ -47,7 +47,7 @@ public class ResourceEntry {
     /**
      * Loaded class.
      */
-    public Class loadedClass = null;
+    public volatile Class loadedClass = null;
 
 
     /**

Modified: 
tomcat/tc5.5.x/trunk/container/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc5.5.x/trunk/container/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java?rev=935947&r1=935946&r2=935947&view=diff
==============================================================================
--- 
tomcat/tc5.5.x/trunk/container/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java
 (original)
+++ 
tomcat/tc5.5.x/trunk/container/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java
 Tue Apr 20 14:53:28 2010
@@ -944,9 +944,7 @@ public class WebappClassLoader
             }
             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);
@@ -1311,7 +1309,7 @@ public class WebappClassLoader
      *
      * @exception ClassNotFoundException if the class was not found
      */
-    public Class loadClass(String name, boolean resolve)
+    public synchronized Class loadClass(String name, boolean resolve)
         throws ClassNotFoundException {
 
         if (log.isDebugEnabled())

Modified: tomcat/tc5.5.x/trunk/container/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc5.5.x/trunk/container/webapps/docs/changelog.xml?rev=935947&r1=935946&r2=935947&view=diff
==============================================================================
--- tomcat/tc5.5.x/trunk/container/webapps/docs/changelog.xml (original)
+++ tomcat/tc5.5.x/trunk/container/webapps/docs/changelog.xml Tue Apr 20 
14:53:28 2010
@@ -51,6 +51,11 @@
   <subsection name="Catalina">
     <changelog>
       <fix>
+        <bug>44041</bug>, <bug>48694</bug>: Fix duplicate class definition
+        under load. Avoid possible deadlock in class loading.
+        (markt/kkolinko)
+      </fix>
+      <fix>
         <bug>47774</bug>: Ensure web application class loader is used when 
         calling session listeners. (kfujino)
       </fix>

Modified: 
tomcat/tc5.5.x/trunk/jasper/src/share/org/apache/jasper/servlet/JasperLoader.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc5.5.x/trunk/jasper/src/share/org/apache/jasper/servlet/JasperLoader.java?rev=935947&r1=935946&r2=935947&view=diff
==============================================================================
--- 
tomcat/tc5.5.x/trunk/jasper/src/share/org/apache/jasper/servlet/JasperLoader.java
 (original)
+++ 
tomcat/tc5.5.x/trunk/jasper/src/share/org/apache/jasper/servlet/JasperLoader.java
 Tue Apr 20 14:53:28 2010
@@ -88,7 +88,7 @@ public class JasperLoader extends URLCla
      *                                     
      * @exception ClassNotFoundException if the class was not found
      */                                    
-    public Class loadClass(final String name, boolean resolve)
+    public synchronized Class loadClass(final String name, boolean resolve)
         throws ClassNotFoundException {
 
         Class clazz = null;                



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to