You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@karaf.apache.org by "Guillaume Nodet (JIRA)" <ji...@apache.org> on 2017/10/02 07:59:00 UTC
[jira] [Commented] (KARAF-5395)
ResourceImpl/RequirementImpl/CapabilityImpl do not correctly implement
their OSGi interface contracts
[ https://issues.apache.org/jira/browse/KARAF-5395?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16187738#comment-16187738 ]
Guillaume Nodet commented on KARAF-5395:
----------------------------------------
I've committed another small fix to improve memory consumption for identity requirements.
What's the overall memory gain in your case ? Is there anything more we can easily do ?
> 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)