Intermittent deadlock while using declarative services in Tuscany   
--------------------------------------------------------------------

                 Key: FELIX-489
                 URL: https://issues.apache.org/jira/browse/FELIX-489
             Project: Felix
          Issue Type: Bug
          Components: Declarative Services
    Affects Versions: 1.0.0
            Reporter: Rajini Sivaram


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 
 
 


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to