aries-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "John Ross (JIRA)" <>
Subject [jira] [Resolved] (ARIES-1392) Provide a more efficient implementation of a system repository.
Date Wed, 02 Sep 2015 15:28:45 GMT


John Ross resolved ARIES-1392.
    Resolution: Fixed

> Provide a more efficient implementation of a system repository.
> ---------------------------------------------------------------
>                 Key: ARIES-1392
>                 URL:
>             Project: Aries
>          Issue Type: Improvement
>          Components: Subsystem
>    Affects Versions: subsystem-2.0.2
>            Reporter: John Ross
>            Assignee: John Ross
>              Labels: performance
>         Attachments:
> While running the same test case developed as part of ARIES-1357, profiling continually
showed a bottleneck surrounding the system repository. A more efficient implementation has
been provided using code copied over from the Apache Felix ( project.
> These classes were copied to the org.apache.aries.subsystem.core.capabilityset package
with some modifications. A new repository implementation called CapabilitySetRepository was
created using these classes from the Felix project. This repository will index the standard
namespaces along with their associated namespace attributes. It will also create additional
capability sets as necessary when encountering custom namespaces.
> The system repository now delegates to CapabilitySetRepository. In addition, the system
repository now tracks both bundles and subsystem services. Capabilities are added to the repository
as they appear and removed when they go away. Bundle revisions are wrapped with BundleRevisionResource
in order to account for service capabilities.
> Other changes resulting from this optimization are listed below. They were necessary
and appropriate because either (a) BundleRevisionResource became part of the normal flow when
delivered from the system repository, or (b) computing service capabilities for the system
repository requires searching for blueprint.xml files in the bundle which causes the framework
to attempt a resolution.
> (1) BundleResourceInstaller must now check for BundleRevisionResource in addition to
BundleRevision when installing a bundle.
> (2) BundleRevisionResource now provides access to the wrapped BundleRevision.
> (3) ResolveContext must now check for BundleRevisionResource in addition to BundleResource
when identifying the region of an already installed resource.
> (4) SubsystemResolverHook will now prevent bundles not referenced by any subsystems from
resolving. A non-referenced bundle is one that is being installed as part of a subsystem installation
before it has been added as a reference.
> (5) Utils now includes BundleRevisionResource, in addition to BasicSubsystem and BundleRevision,
as a shared resource, which is essentially any resource that has already been installed and
being referenced by a new subsystem.
> (6) RootSubsystemTest was modified to allow for the RESOLVED state when ensuring the
bundle has not been started. Frameworks are allowed to attempt to resolve bundles as needed,
and subsystems no longer prevent resolution after entering the installed state, which is the
case in this test.
> As part of future work, some of the other internal repository implementations, such as
ContentRepository, LocalRepository, and PreferredProviderRepository, should be modified to
use CapabilitySetRepository as well.
> The measurements used the same test scenario being developed as part of ARIES-1357. The
time it took to install 50 features was measured. Each feature consists of 10 bundles plus
one application. All features share the same 10 bundles. Each bundle exports 5 unique packages.
Each application consists of 10 unique bundles. The bundles import packages offered by the
containing feature.
> Baseline
> Average time across 1 trials: 25843.0 ms
> Average time across 1 trials: 25824.0 ms
> Average time across 1 trials: 25767.0 ms
> Average time across 1 trials: 26043.0 ms
> Average time across 1 trials: 25819.0 ms
> 25859.2
> New System Repository
> Average time across 1 trials: 12260.0 ms
> Average time across 1 trials: 11658.0 ms
> Average time across 1 trials: 11602.0 ms
> Average time across 1 trials: 11485.0 ms
> Average time across 1 trials: 11629.0 ms
> 11726.8
> A 54.7% improvement.

This message was sent by Atlassian JIRA

View raw message