[
https://issues.apache.org/jira/browse/FELIX-341?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Felix Meschberger updated FELIX-341:
------------------------------------
Fix Version/s: (was: felix-1.0.0)
scr-1.0.0
> Intermittent exception during Felix shutdown
> --------------------------------------------
>
> Key: FELIX-341
> URL: https://issues.apache.org/jira/browse/FELIX-341
> Project: Felix
> Issue Type: Bug
> Components: Declarative Services (SCR)
> Affects Versions: felix-1.0.0
> Reporter: Rajini Sivaram
> Assignee: Felix Meschberger
> Fix For: scr-1.0.0
>
>
> One of my testcases intermittently throws an exception during shutdown. I
> have managed to recreate the exception under a debugger, and it shows two
> threads trying to unregister the same service. The test fails only when
> declarative services are used. I am using Felix 1.0.0 framework and the
> latest snapshot of SCR. The test uses multiple versions of a bundle, but I am
> not sure if that has anything to do with the exception.
>
> The exception thrown is:
>
> --- Exception with component : Unexpected problem executing task ---
> java.lang.IllegalStateException: Service already unregistered.
> at org.apache.felix.framework.ServiceRegistrationImpl.unregister
> (ServiceRegistrationImpl.java:105)
> at
> org.apache.felix.scr.AbstractComponentManager.unregisterComponentService(AbstractComponentManager.java:503)
> at org.apache.felix.scr.AbstractComponentManager.deactivateInternal
> (AbstractComponentManager.java:369)
> at
> org.apache.felix.scr.AbstractComponentManager.access$200(AbstractComponentManager.java:55)
> at
> org.apache.felix.scr.AbstractComponentManager$3.run(AbstractComponentManager.java
> :176)
> at
> org.apache.felix.scr.ComponentActorThread.run(ComponentActorThread.java:81)
>
> Here is the stack trace of the two threads under the debugger (both are using
> the same object):
>
> Thread [FelixStartLevel] (Suspended (breakpoint at line 97 in
> ServiceRegistrationImpl))
> ServiceRegistrationImpl.unregister() line: 97
> ServiceRegistry.unregisterServices (Bundle) line: 119
> Felix._stopBundle(FelixBundle, boolean) line: 1946
> Felix.stopBundle(FelixBundle, boolean) line: 1866
> Felix.setFrameworkStartLevel (int) line: 1080
> StartLevelImpl.run() line: 258
> Thread.run() line: 803
> Thread [SCR Component Actor] (Suspended (breakpoint at line
> 97 in ServiceRegistrationImpl))
> ServiceRegistrationImpl.unregister() line: 97
>
> ImmediateComponentManager(AbstractComponentManager).unregisterComponentService()
> line: 503
>
> ImmediateComponentManager(AbstractComponentManager).deactivateInternal()
> line: 369
>
> AbstractComponentManager.access$200(AbstractComponentManager) line: 55
> AbstractComponentManager$3.run() line: 176
> ComponentActorThread.run() line: 81
>
>
> The exception thrown is the IllegalStateException from
> public void unregister()
> {
> if (m_svcObj != null)
> {
> m_registry.unregisterService(m_bundle, this);
> m_svcObj = null;
> m_factory = null;
> }
> else
> {
> throw new IllegalStateException("Service already unregistered.");
> }
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.