karaf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robert Varga (JIRA)" <j...@apache.org>
Subject [jira] [Created] (KARAF-5395) ResourceImpl/RequirementImpl/CapabilityImpl do not correctly implement their OSGi interface contracts
Date Thu, 28 Sep 2017 19:49:00 GMT
Robert Varga created KARAF-5395:
-----------------------------------

             Summary: 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.0.10, 4.1.2, 4.2.0
            Reporter: Robert Varga
            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.6GB, e.g.
with a heap smaller than that, the container runs into OOM.



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

Mime
View raw message