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);