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

Reply via email to