You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Felix Meschberger (JIRA)" <ji...@apache.org> on 2007/08/30 16:58:30 UTC
[jira] Resolved: (FELIX-341) Intermittent exception during Felix
shutdown
[ https://issues.apache.org/jira/browse/FELIX-341?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Felix Meschberger resolved FELIX-341.
-------------------------------------
Resolution: Fixed
Fix Version/s: 1.0.0
Fixed in Rev. 571194 as follows:
* Enhanced logging
* No activation of components when the owning bundle is (being) stopped
* Synchronous Component Deactivation (Activation still asynchronous)
* No more Task Scheduling while a Bundle is stopped or stopping
Also deployed a new snapshot.
> 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
> Affects Versions: 1.0.0
> Reporter: Rajini Sivaram
> Assignee: Felix Meschberger
> Fix For: 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.