You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by st...@apache.org on 2020/05/18 14:34:59 UTC

[deltaspike] branch master updated: DELTASPIKE-519 fix potential ClassLoader leak

This is an automated email from the ASF dual-hosted git repository.

struberg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/deltaspike.git


The following commit(s) were added to refs/heads/master by this push:
     new d826c96  DELTASPIKE-519 fix potential ClassLoader leak
d826c96 is described below

commit d826c9686ca85a79b4e8f52beda4ab78b38bb680
Author: Mark Struberg <st...@apache.org>
AuthorDate: Mon May 18 16:34:27 2020 +0200

    DELTASPIKE-519 fix potential ClassLoader leak
---
 .../apache/deltaspike/core/util/ClassDeactivationUtils.java   | 11 +++++++++++
 .../deltaspike/core/impl/config/ConfigurationExtension.java   |  3 +++
 2 files changed, 14 insertions(+)

diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/util/ClassDeactivationUtils.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/util/ClassDeactivationUtils.java
index 3f6477d..b6555e7 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/util/ClassDeactivationUtils.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/util/ClassDeactivationUtils.java
@@ -64,6 +64,17 @@ public abstract class ClassDeactivationUtils
     }
 
     /**
+     * Flush the caches to prevent ClassLoader leaks.
+     * This is called internally by DeltaSpike.
+     * Users do not have to explicitly call this method.
+     * Does not have side effects as the cache is idempotent anyway.
+     */
+    public static void clearCache()
+    {
+        classDeactivatorMap.clear();
+    }
+
+    /**
      * Evaluates if the given {@link Deactivatable} is active.
      *
      * @param targetClass {@link Deactivatable} under test.
diff --git a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/ConfigurationExtension.java b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/ConfigurationExtension.java
index 164dc16..3b7fcad 100644
--- a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/ConfigurationExtension.java
+++ b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/ConfigurationExtension.java
@@ -386,6 +386,9 @@ public class ConfigurationExtension implements Extension, Deactivatable
 
         ConfigResolver.freeConfigSources();
         detectedParentPropertyFileConfigs.remove(ClassUtils.getClassLoader(null));
+
+        // we also free the ClassDeactivationUtils cache
+        ClassDeactivationUtils.clearCache();
     }
 
     /**