You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by ht...@apache.org on 2016/04/01 17:50:32 UTC

svn commit: r1737411 - /openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/Configurations.java

Author: hthomann
Date: Fri Apr  1 15:50:32 2016
New Revision: 1737411

URL: http://svn.apache.org/viewvc?rev=1737411&view=rev
Log:
OPENJPA-2636: Updated a Map in Configurations to avoid a ClassLoader leak.  Ported 2.2.x changes to trunk.

Modified:
    openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/Configurations.java

Modified: openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/Configurations.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/Configurations.java?rev=1737411&r1=1737410&r2=1737411&view=diff
==============================================================================
--- openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/Configurations.java (original)
+++ openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/Configurations.java Fri Apr  1 15:50:32 2016
@@ -196,7 +196,9 @@ public class Configurations {
         Object key = loader == null ? NULL_LOADER : loader;
         Map<String,Class<?>> loaderCache = (Map<String,Class<?>>) _loaders.get(key);
         if (loaderCache == null) { // We don't have a cache for this loader.
-            loaderCache = new ConcurrentHashMap<String,Class<?>>();
+            //OPENJPA-2636: Changed to HARD/WEAK to avoid Classloader leak:
+            loaderCache = new ConcurrentReferenceHashMap(ConcurrentReferenceHashMap.HARD,
+                    ConcurrentReferenceHashMap.WEAK);            
             _loaders.put(key, loaderCache);
         } else {  // We have a cache for this loader.
             cls = (Class<?>) loaderCache.get(clsName);