Darn, this looks like another place where we call out while holding a lock.
I'll look into it - thanks for catching this. Could you maybe create a JIRA issue for this? regards, Karl On Feb 12, 2008 10:06 PM, Rajini Sivaram <[EMAIL PROTECTED]> wrote: > Hello, > > One of my tests using declarative services hangs intermittently. The stack > trace from a debugger shows two threads waiting for locks owned by the > other. I am using Felix framework 1.0.3 and SCR 1.0.0. The call from the > main thread to getService is triggered by Tuscany - I am not sure if there > are times when it shouldn't call bundleContext.getService. But the order of > locking in the two threads are different leading to the deadlock - is it > something that could be fixed? The main thread owns the ServiceRegistry lock > and is waiting for the lock on ServiceFactoryComponentManager, while the > configuration updater owns the ServiceFactoryComponentManager lock and is > waiting for the ServiceRegistry lock. > > > > Thread [main] (Suspended) > ServiceFactoryComponentManager.getService(Bundle, ServiceRegistration) > line: 111 > ServiceRegistrationImpl.getFactoryUnchecked(Bundle) line: 245 > ServiceRegistrationImpl.getService(Bundle) line: 179 > ServiceRegistry.getService(Bundle, ServiceReference) line: 238 > Felix.getService(Bundle, ServiceReference) line: 2835 > BundleContextImpl.getService(ServiceReference) line: 417 > .............. (Tuscany) > > Thread [Configuration Updater] (Suspended) > ServiceRegistry.unregisterService(Bundle, ServiceRegistration) line: 78 > ServiceRegistrationImpl.unregister() line: 99 > > ServiceFactoryComponentManager(AbstractComponentManager).unregisterComponentService() > line: 610 > > ServiceFactoryComponentManager(AbstractComponentManager).deactivateInternal() > line: 464 > ServiceFactoryComponentManager(AbstractComponentManager).reactivate() > line: 142 > > ServiceFactoryComponentManager(ImmediateComponentManager).reconfigure(Dictionary) > line: 399 > ImmediateComponentManager$1.updated(Dictionary) line: 90 > ConfigurationManager$ManagedServiceUpdate.run() line: 863 > UpdateThread.run() line: 89 > > > > > Thank you... > > Regards, > > Rajini > -- Karl Pauls [EMAIL PROTECTED]
