felix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Felix Meschberger (JIRA)" <j...@apache.org>
Subject [jira] Resolved: (FELIX-341) Intermittent exception during Felix shutdown
Date Thu, 30 Aug 2007 14:58:30 GMT

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


Mime
View raw message