aries-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "John Ross (JIRA)" <>
Subject [jira] [Updated] (ARIES-1399) Trunk fails OSGi R6 CT
Date Mon, 05 Oct 2015 13:58:26 GMT


John Ross updated ARIES-1399:
    Component/s: Subsystem

> Trunk fails OSGi R6 CT
> ----------------------
>                 Key: ARIES-1399
>                 URL:
>             Project: Aries
>          Issue Type: Bug
>          Components: Subsystem
>            Reporter: John Ross
>            Assignee: John Ross
>             Fix For: subsystem-2.0.4
>         Attachments: TEST-org.osgi.test.cases.subsystem-6.0.0.html, TEST-org.osgi.test.cases.subsystem-6.0.0.html
> The Subsystems implementation is currently failing three tests in the R6 CT as a result
of some of the recent performance tunings:
> org.osgi.test.cases.subsystem.junit.SharingPolicySubsystemTests.test3A1a_BundleIsolationApplication
> org.osgi.test.cases.subsystem.junit.SharingPolicySubsystemTests.test3A1b_BundleIsolationFeatures
> org.osgi.test.cases.subsystem.junit.SharingPolicySubsystemTests.test3A1a_BundleIsolationComposite
> It fails all three for the same reason. The tests explicitly install a bundle using the
region bundle context of the root subsystem. The bundle is subsequently started. Using a synchronous
bundle listener, the tests reasonably expect to see INSTALLED, RESOLVED, STARTING, and ACTIVE
bundle events. However, the RESOLVED event is missing. It is missing because:
> (1) The Bundle Event Hook, registered with a service ranking of Integer.MAX_VALUE, correctly
identifies the event as pertaining to an explicitly installed bundle and acts accordingly.
> (2) As normal, the bundle is wrapped by a Bundle Revision Resource in order to compute
the service capabilities and requirements if the Application Modeller service is present.
Previously, the capabilities and requirements were not cached but (lazily) computed with each
request. Today, they are computed once and cached at instantiation.
> (3) Computing the service capabilities and requirements requires searching for Blueprint
XML files through Bundle.findEntries which results in the framework attempting to resolve
the bundle.
> (4) Region Digraph, through its own bundle event hook, receives the RESOLVED event before
the INSTALLED event. Because this is an unknown bundle, the event is filtered and not delivered
to any listeners, synchronous or otherwise.
> There are at least a few possible solutions to the problem.
> (1) Have the Bundle Event Hook explicitly add the bundle to the region using Region.addBundle(Bundle)
as part of handling the INSTALLED event. This would (+) solve the immediate issue but (-)
promote out of order event delivery to other hooks and listeners.
> (2) Prevent bundles under these circumstances from resolving altogether. This would (+)
solve the immediate issue and (+) prevent out of order event delivery, but (-) eliminate the
possibility of searching fragment bundles for Blueprint XML files. 
> (3) Lazily compute service dependencies and requirements in Bundle Revision Resource
as before but still cache them. This would (+) solve the immediate issue, (+) resemble how
things already were before performance tuning, (+) not contribute to out of order event delivery,
and (+) leave open the possibility of searching fragments for Blueprint XML files.

This message was sent by Atlassian JIRA

View raw message