karaf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From J. Brébec (JIRA) <j...@apache.org>
Subject [jira] [Commented] (KARAF-5371) Race condition between FeatureService and Fileinstall
Date Wed, 11 Oct 2017 08:49:00 GMT

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

J. Brébec commented on KARAF-5371:

This doesn't work either.

However, I am able to reproduce this issue in a very specific case (and only in debug..) :
- The FeatureService activator is only launched when ConfigurationAdmin and the URL mvn handler
is registered 
- The ConfigurationAdmin is registered synchronously, but the URL mvn handler waits for a
valid mvn configuration
- If the mvn configuration is not present when the FeatureService bundle is activated, the
doStart() is executed asynchronously an his own thread => The Aries Blueprint bundle is
started before the FeatureService, and waits for a ProxyManager service
- The FeatureService is started, create a new digraph, and register the hooks. The digraph
doesn't contains the blueprint bundle (DigraphHelper.verifyUnmanagedBundles is not called)
- The ProxyManager service is registered => Aries Blueprint open his BundleTracker =>
it calls bundleContext.getBundle(0)
- The FeatureService FindHook rejects the call as the blueprint bundle doesn't have any region
- Aries Blueprint fails with a NPE

I don't know if it's the scenario I see in my test platform, however this bugs can be fixed
by calling 'DigraphHelper.verifyUnmanagedBundles' twice : before registering the hooks, and
after. I'll launch my itest with this patch in the afternoon.

> Race condition between FeatureService and Fileinstall
> -----------------------------------------------------
>                 Key: KARAF-5371
>                 URL: https://issues.apache.org/jira/browse/KARAF-5371
>             Project: Karaf
>          Issue Type: Bug
>          Components: karaf-feature
>    Affects Versions: 4.1.2
>            Reporter: J. Brébec
>            Assignee: Guillaume Nodet
>            Priority: Critical
>             Fix For: 4.2.0, 4.1.3
> If a bundle is installed when the FeatureService is started, then it is possible that
this bundle is not associated to the default region. as a consequence, every services exported
by this bundle are not visible from the osgi container, until karaf is restarted.
> A real usecase :
> - A new karaf distribution, with a blueprint file in a folder managed by fileinstall
> - When the distribution is started, as fileinstall is started before the feature bundle,
and the folder are watched asynchronously, the blueprint file is installed before or in the
same time the featureservice is started
> => the services exported by the blueprint file are not visible
> This race condition is located in the FeatureService activator : the digraph is loaded,
and every bundle not known are added to the default region. then, it subscribes a bundle-listener
: If a bundle X is installed between the digraph loading and the subscription of the bundle
listener, then this bundle X is not attached to the default region.
> On my machine, this issue happens 70% of the time on a cold start.

This message was sent by Atlassian JIRA

View raw message