felix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rajini Sivaram" <rajinisiva...@googlemail.com>
Subject Intermittent exception during Felix shutdown
Date Mon, 20 Aug 2007 14:18:35 GMT
Hello,

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. 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.");
*        }
    }



Thank you...

Regards,

Rajini

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message