Author: markt Date: Wed Sep 24 10:35:21 2014 New Revision: 1627272 URL: http://svn.apache.org/r1627272 Log: Pick up improved memory leak fix from Pool 2.
Modified: tomcat/trunk/java/org/apache/tomcat/dbcp/pool2/ (props changed) tomcat/trunk/java/org/apache/tomcat/dbcp/pool2/impl/BaseGenericObjectPool.java tomcat/trunk/webapps/docs/changelog.xml Propchange: tomcat/trunk/java/org/apache/tomcat/dbcp/pool2/ ------------------------------------------------------------------------------ Merged /commons/proper/pool/trunk/src/main/java/org/apache/commons/pool2:r1627023-1627271 Modified: tomcat/trunk/java/org/apache/tomcat/dbcp/pool2/impl/BaseGenericObjectPool.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/dbcp/pool2/impl/BaseGenericObjectPool.java?rev=1627272&r1=1627271&r2=1627272&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/dbcp/pool2/impl/BaseGenericObjectPool.java (original) +++ tomcat/trunk/java/org/apache/tomcat/dbcp/pool2/impl/BaseGenericObjectPool.java Wed Sep 24 10:35:21 2014 @@ -91,8 +91,8 @@ public abstract class BaseGenericObjectP private Evictor evictor = null; // @GuardedBy("evictionLock") Iterator<PooledObject<T>> evictionIterator = null; // @GuardedBy("evictionLock") /* - * Class loader for evictor thread to use since in a J2EE or similar - * environment the context class loader for the evictor thread may have + * Class loader for evictor thread to use since, in a JavaEE or similar + * environment, the context class loader for the evictor thread may not have * visibility of the correct factory. See POOL-161. Uses a weak reference to * avoid potential memory leaks if the Pool is discarded rather than closed. */ @@ -136,9 +136,14 @@ public abstract class BaseGenericObjectP // Populate the creation stack trace this.creationStackTrace = getStackTrace(new Exception()); - // save the current CCL to be used later by the evictor Thread - factoryClassLoader = - new WeakReference<>(Thread.currentThread().getContextClassLoader()); + // save the current TCCL (if any) to be used later by the evictor Thread + ClassLoader cl = Thread.currentThread().getContextClassLoader(); + if (cl == null) { + factoryClassLoader = null; + } else { + factoryClassLoader = new WeakReference<>(cl); + } + fairness = config.getFairness(); } @@ -998,15 +1003,18 @@ public abstract class BaseGenericObjectP ClassLoader savedClassLoader = Thread.currentThread().getContextClassLoader(); try { - // Set the class loader for the factory - ClassLoader cl = factoryClassLoader.get(); - if (cl == null) { - // The pool has been dereferenced and the class loader GC'd. - // Cancel this timer so the pool can be GC'd as well. - cancel(); - return; + if (factoryClassLoader != null) { + // Set the class loader for the factory + ClassLoader cl = factoryClassLoader.get(); + if (cl == null) { + // The pool has been dereferenced and the class loader + // GC'd. Cancel this timer so the pool can be GC'd as + // well. + cancel(); + return; + } + Thread.currentThread().setContextClassLoader(cl); } - Thread.currentThread().setContextClassLoader(cl); // Evict from the pool try { Modified: tomcat/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1627272&r1=1627271&r2=1627272&view=diff ============================================================================== --- tomcat/trunk/webapps/docs/changelog.xml (original) +++ tomcat/trunk/webapps/docs/changelog.xml Wed Sep 24 10:35:21 2014 @@ -252,7 +252,7 @@ </fix> <fix> Update the package renamed copy of Apache Commons Pool 2 to revision - 1627022 to pick up the fixes since the 2.2 release including some memory + 1627271 to pick up the fixes since the 2.2 release including some memory leak fixes and support for application provided eviction policies. (markt) </fix> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org