[
https://issues.apache.org/jira/browse/FELIX-4287?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
David Jencks resolved FELIX-4287.
---------------------------------
Resolution: Fixed
r1534395
> [DS] NPE when calling ComponentInstance.dispose after bundle shut down
> ----------------------------------------------------------------------
>
> Key: FELIX-4287
> URL: https://issues.apache.org/jira/browse/FELIX-4287
> Project: Felix
> Issue Type: Bug
> Components: Declarative Services (SCR)
> Affects Versions: scr-1.8.0
> Reporter: David Jencks
> Assignee: David Jencks
> Fix For: scr-1.8.0
>
>
> There are no checks in the call sequence from ComponentInstance.dispose that
> the component has not already been disposed. This often causes no problems
> but if the bundle has been shut down and the ComponentInstance is stale this
> can cause an NPE such as (thanks to Pierre de Rop):
> java.lang.NullPointerException
> at
> org.apache.felix.scr.impl.BundleComponentActivator.unregisterComponentId(BundleComponentActivator.java:500)
> at
> org.apache.felix.scr.impl.manager.AbstractComponentManager.clear(AbstractComponentManager.java:1157)
> at
> org.apache.felix.scr.impl.manager.SingleComponentManager.clear(SingleComponentManager.java:109)
> at
> org.apache.felix.scr.impl.manager.AbstractComponentManager.disposeInternal(AbstractComponentManager.java:890)
> at
> org.apache.felix.scr.impl.manager.AbstractComponentManager.dispose(AbstractComponentManager.java:576)
> at
> org.apache.felix.scr.impl.manager.AbstractComponentManager.dispose(AbstractComponentManager.java:561)
> at
> org.apache.felix.scr.impl.manager.ComponentContextImpl$ComponentInstanceImpl.dispose(ComponentContextImpl.java:226)
> at
> ....
> I'm going to eliminate the direct cause of the NPE by not unsetting the field
> in BCA but also simplify the deactivate/dispose methods to make the control
> flow clearer and put a disposed check at the top.
--
This message was sent by Atlassian JIRA
(v6.1#6144)