David Jencks created FELIX-4287:
-----------------------------------
Summary: [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)