karaf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Guillaume Nodet (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (KARAF-5395) ResourceImpl/RequirementImpl/CapabilityImpl do not correctly implement their OSGi interface contracts
Date Tue, 10 Oct 2017 12:59:01 GMT

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

Guillaume Nodet commented on KARAF-5395:

I haven't been able to find a solution to the issue above.  Merging the resources cause problems
with features which are partially installed.  This solution can only work with simple scenarios
without conditional and without any feature dependency with the {{dependency="true"}} flag

I think you'll have to improve your generation mechanism to set the {{dependency="true"}}
flag on bundles where needed and to refer to other features instead of inlining them.

> ResourceImpl/RequirementImpl/CapabilityImpl do not correctly implement their OSGi interface
> -----------------------------------------------------------------------------------------------------
>                 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

View raw message