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