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: [email protected]
For additional commands, e-mail: [email protected]