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] [Created] (KARAF-6074) Race condition between the FeaturesService and FeatureDeploymentListener
Date Mon, 07 Jan 2019 13:49:00 GMT
J. Brébec created KARAF-6074:

             Summary: Race condition between the FeaturesService and FeatureDeploymentListener
                 Key: KARAF-6074
                 URL: https://issues.apache.org/jira/browse/KARAF-6074
             Project: Karaf
          Issue Type: Bug
          Components: karaf
    Affects Versions: 4.2.2
         Environment: Karaf 4.2.2 Windows 7 and Equinox
            Reporter: J. Brébec

On the first start of a custom Karaf container (4.2.2), the logs shows a log of NPE in FeatureDeploymentListener.

After some analysis of this Exception, it's look like a race condition between the FeaturesService
and the FeatureDeploymentListener :
 # The FeaturesService starts and launch a provisioning in another thread
 # a FeatureDeploymentListener is registered, and call bundleChanged for every bundle installed
(the startup bundles)
 # It calls FeaturesService.state.requirements and get an empty map
 # Updating the root regions in the requirements map fails with an NPE
 # Some times later, the deployment task launched at step 1 is started, and FeaturesService.saveState()
is called : state.requirements."root region" is initialised

The step 5 is executed in another thread, so it can happens before step 2 (and it works) or
after, causing this NPE

Moreover, some methods in FeaturesService assume that state.requirements."root region" exists.
There are probably others npe here.

14:37:55.668 ERROR [activator-1-thread-2] Unable to update deployed features for bundle: org.eclipse.osgi
- 3.12.100.v20180210-1608
java.lang.NullPointerException: null
at org.apache.karaf.deployer.features.FeatureDeploymentListener.bundleChanged(FeatureDeploymentListener.java:247)
at org.apache.karaf.deployer.features.FeatureDeploymentListener.init(FeatureDeploymentListener.java:95)
at org.apache.karaf.deployer.features.osgi.Activator.doStart(Activator.java:52) [25:org.apache.karaf.deployer.features:4.2.2]
at org.apache.karaf.util.tracker.BaseActivator.run(BaseActivator.java:292) [25:org.apache.karaf.deployer.features:4.2.2]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]{code}

This message was sent by Atlassian JIRA

View raw message