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

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

Unfortunately, I think this is not something that can be easily worked around.
The reason is that the way Karaf uses the OSGi resolver is slightly more 
complicated than a pure OSGi resolution.
Karaf defines additional resources corresponding to features, and the resource 
for a bundle in a given feature will be added a requirement to the resource for 
the feature itself.  Thoses additional requirements allow more fine grained 
control on the resolver process to support the {{dependency="true"}} flag for 
example, or regions, conditionals, etc...  A good and simple example of why 
it's necessary is for example the fact that with support for regions, a given 
bundle can actually be deployed several times in the same framework.

So the assumption that they violate their contract is wrong, because they don't 
really have the same content afaik, as their requirements are slightly 
different.

> 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