Hi Rajini,
Just a quick question: What version of the Felix SCR Bundle are you
using ?
Is there anything special about your test case, like for example
Multi-threadedness in some way or the other ?
Thanks and Regards
Felix
Am Montag, den 20.08.2007, 15:18 +0100 schrieb Rajini Sivaram:
> 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