You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2018/02/22 13:15:55 UTC
svn commit: r1825054 - in /tomcat/trunk:
java/org/apache/catalina/loader/WebappClassLoaderBase.java
webapps/docs/changelog.xml
Author: markt
Date: Thu Feb 22 13:15:55 2018
New Revision: 1825054
URL: http://svn.apache.org/viewvc?rev=1825054&view=rev
Log:
Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=62123
Avoid ConcurrentModificationException when attempting to clean up application triggered RMI memory leaks on web application stop.
Modified:
tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoaderBase.java
tomcat/trunk/webapps/docs/changelog.xml
Modified: tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoaderBase.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoaderBase.java?rev=1825054&r1=1825053&r2=1825054&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoaderBase.java (original)
+++ tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoaderBase.java Thu Feb 22 13:15:55 2018
@@ -2066,16 +2066,18 @@ public abstract class WebappClassLoaderB
stubField.setAccessible(true);
// Clear the objTable map
- Class<?> objectTableClass =
- Class.forName("sun.rmi.transport.ObjectTable");
+ Class<?> objectTableClass = Class.forName("sun.rmi.transport.ObjectTable");
Field objTableField = objectTableClass.getDeclaredField("objTable");
objTableField.setAccessible(true);
Object objTable = objTableField.get(null);
if (objTable == null) {
return;
}
+ Field tableLockField = objectTableClass.getDeclaredField("tableLock");
+ tableLockField.setAccessible(true);
+ Object tableLock = tableLockField.get(null);
- synchronized (objTable) {
+ synchronized (tableLock) {
// Iterate over the values in the table
if (objTable instanceof Map<?,?>) {
Iterator<?> iter = ((Map<?,?>) objTable).values().iterator();
Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1825054&r1=1825053&r2=1825054&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Thu Feb 22 13:15:55 2018
@@ -87,6 +87,11 @@
Fix for <code>RequestDumperFilter</code> log attribute. Patch provided
by Kirill Romanov via Github. (violetagg)
</fix>
+ <fix>
+ <bug>62123</bug>: Avoid <code>ConcurrentModificationException</code>
+ when attempting to clean up application triggered RMI memory leaks on
+ web application stop. (markt)
+ </fix>
</changelog>
</subsection>
<subsection name="Coyote">
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org