You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2020/01/03 10:46:40 UTC

[camel] 01/02: Optimize package scan to only create jar cache on-demand when needed

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

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

commit f6f636296993daec5b4eaa70d77440836567d707
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Jan 3 11:24:54 2020 +0100

    Optimize package scan to only create jar cache on-demand when needed
---
 .../camel/impl/engine/DefaultPackageScanClassResolver.java | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultPackageScanClassResolver.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultPackageScanClassResolver.java
index 3edde38..4c69b1c 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultPackageScanClassResolver.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultPackageScanClassResolver.java
@@ -53,7 +53,7 @@ import org.apache.camel.util.ObjectHelper;
  */
 public class DefaultPackageScanClassResolver extends BasePackageScanResolver implements PackageScanClassResolver, NonManagedService {
 
-    private Map<String, List<String>> jarCache;
+    private volatile Map<String, List<String>> jarCache;
     private Set<PackageScanFilter> scanFilters;
 
     @Override
@@ -250,6 +250,12 @@ public class DefaultPackageScanClassResolver extends BasePackageScanResolver imp
                             stream = new FileInputStream(file);
                         }
 
+                        // only create jar cache on-demand when needed
+                        if (jarCache == null) {
+                            // use a soft cache so it can be claimed if needed
+                            jarCache = LRUCacheFactory.newLRUWeakCache(1000);
+                        }
+
                         loadImplementationsInJar(test, packageName, stream, urlPath, classes, jarCache);
                     } finally {
                         IOHelper.close(stream);
@@ -444,11 +450,7 @@ public class DefaultPackageScanClassResolver extends BasePackageScanResolver imp
 
     @Override
     protected void doStart() throws Exception {
-        if (jarCache == null) {
-            // use a JAR cache to speed up scanning JARs, but let it be soft referenced
-            // so it can claim the data when memory is needed
-            jarCache = LRUCacheFactory.newLRUCache(1000);
-        }
+        // noop
     }
 
     @Override