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/22 07:56:33 UTC

[jira] Work started: (FELIX-341) Intermittent exception during Felix shutdown

     [ https://issues.apache.org/jira/browse/FELIX-341?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Work on FELIX-341 started by Felix Meschberger.

> 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
>
> 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.