[ 
https://issues.apache.org/jira/browse/KARAF-5395?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16185345#comment-16185345
 ] 

Guillaume Nodet commented on KARAF-5395:
----------------------------------------

You could try the following patch to minimize some of the problems raised in 
the odl issue.
{code}
diff --git 
a/features/core/src/main/java/org/apache/karaf/features/internal/resolver/ResourceBuilder.java
 
b/features/core/src/main/java/org/apache/karaf/features/internal/resolver/ResourceBuilder.java
index c5240096af..738304ec38 100644
--- 
a/features/core/src/main/java/org/apache/karaf/features/internal/resolver/ResourceBuilder.java
+++ 
b/features/core/src/main/java/org/apache/karaf/features/internal/resolver/ResourceBuilder.java
@@ -357,7 +357,7 @@ public final class ResourceBuilder {
                     String multiple = clause.dirs.get("multiple");
                     String avail = clause.dirs.get("availability");
                     String filter = (String) clause.attrs.get("filter");
-                    Map<String, String> dirs = new LinkedHashMap<>();
+                    Map<String, String> dirs = new LinkedHashMap<>(2);
                     dirs.put(ServiceNamespace.REQUIREMENT_EFFECTIVE_DIRECTIVE, 
ServiceNamespace.EFFECTIVE_ACTIVE);
                     if ("optional".equals(avail)) {
                         
dirs.put(ServiceNamespace.REQUIREMENT_RESOLUTION_DIRECTIVE, 
ServiceNamespace.RESOLUTION_OPTIONAL);
@@ -1196,8 +1196,8 @@ public final class ResourceBuilder {
 
     static class ParsedHeaderClause {
         public final List<String> paths = new ArrayList<>();
-        public final Map<String, String> dirs = new LinkedHashMap<>();
-        public final Map<String, Object> attrs = new LinkedHashMap<>();
-        public final Map<String, String> types = new LinkedHashMap<>();
+        public final Map<String, String> dirs = new LinkedHashMap<>(1);
+        public final Map<String, Object> attrs = new LinkedHashMap<>(1);
+        public final Map<String, String> types = new LinkedHashMap<>(1);
     }
 }
{code}

> ResourceImpl/RequirementImpl/CapabilityImpl do not correctly implement their 
> OSGi interface contracts
> -----------------------------------------------------------------------------------------------------
>
>                 Key: KARAF-5395
>                 URL: https://issues.apache.org/jira/browse/KARAF-5395
>             Project: Karaf
>          Issue Type: Bug
>          Components: karaf-feature
>    Affects Versions: 4.2.0, 4.1.2, 4.0.10
>            Reporter: Robert Varga
>            Assignee: Guillaume Nodet
>            Priority: Critical
>
> This is a follow-up of downstream issue tracked at 
> https://bugs.opendaylight.org/show_bug.cgi?id=9218.
> OpenDaylight uses auto-generated features, which may end up packaging a 
> bundle multiple times in separate features -- which can be regarded as a bug, 
> but it certainly is counter-intuitive.
> Using a simple test case of wanting to install all features at the same time 
> triggers huge memory usage spike in Felix Resolver.
> Since ResourceImpl does not explictly override hashCode()/equals() according 
> to org.osgi.resource.Resource interface contract, every resource declaration 
> in a feature is treated as unique -- disregarding the fact that multiple 
> bundle declarations are actually pointing to the same bundle.
> This cascades to both RequirementImpl and CapabilityImpl, hence each such 
> duplicate bundle is added to the set of Requirements to be resolved and its 
> capabilities are added to potential candidates -- leading to Felix Resolver 
> having a large problem space (what to resolve) and also having a large 
> solution space (how to resolve) -- leading to polynomial explosion in CPU and 
> memory requirements.
> The amount of memory consumed by OpenDaylight Nitrogen RC3 has been observed 
> at 1.2GB, e.g. with a heap smaller than that, the container runs into OOM 
> during feature:install before actual installation starts.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to