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

J. Brébec commented on KARAF-6074:
----------------------------------

After upgrading to Karaf 4.2.4, this issue is always present : when the 
listener is registered, the FeaturesService emit the last deployment status, 
which is by default "DEPLOYMENT_FINISHED" (see 
[FeaturesServiceImpl#L128|https://github.com/apache/karaf/blob/cbf9755285b7de1a799449c765f3d339c1d8d25d/features/core/src/main/java/org/apache/karaf/features/internal/service/FeaturesServiceImpl.java#L128])

I can see this in the logs : 

{code}
13:22:50.355 ERROR [vator-1-thread-2]|FeatureDeploymentListener       | Unable 
to update deployed features for bundle: org.jline.terminal-jansi - 3.10.0
java.lang.NullPointerException
        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$DeploymentFinishedListener.deploymentEvent(Activator.java:86)
        at 
org.apache.karaf.features.internal.service.FeaturesServiceImpl.registerListener(FeaturesServiceImpl.java:295)
        at 
org.apache.karaf.deployer.features.osgi.Activator.doStart(Activator.java:53)
        at 
org.apache.karaf.util.tracker.BaseActivator.run(BaseActivator.java:292)
        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)
        at java.lang.Thread.run(Thread.java:748)
13:22:50.360 ERROR [vator-1-thread-2]|FeatureDeploymentListener       | Unable 
to update deployed features for bundle: org.jline.terminal - 3.10.0
java.lang.NullPointerException
        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$DeploymentFinishedListener.deploymentEvent(Activator.java:86)
        at 
org.apache.karaf.features.internal.service.FeaturesServiceImpl.registerListener(FeaturesServiceImpl.java:295)
        at 
org.apache.karaf.deployer.features.osgi.Activator.doStart(Activator.java:53)
        at 
org.apache.karaf.util.tracker.BaseActivator.run(BaseActivator.java:292)
        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)
        at java.lang.Thread.run(Thread.java:748)
{code}

 

> 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
>            Assignee: Grzegorz Grzybek
>            Priority: Major
>             Fix For: 4.2.3
>
>
> 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.
>  
> {code:java}
> 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)
>  [25:org.apache.karaf.deployer.features:4.2.2]
> at 
> org.apache.karaf.deployer.features.FeatureDeploymentListener.init(FeatureDeploymentListener.java:95)
>  [25:org.apache.karaf.deployer.features:4.2.2]
> 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
(v7.6.3#76005)

Reply via email to