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-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org