You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Karl Pauls (JIRA)" <ji...@apache.org> on 2008/02/13 10:08:13 UTC

[jira] Assigned: (FELIX-489) Intermittent deadlock while using declarative services in Tuscany

     [ https://issues.apache.org/jira/browse/FELIX-489?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Karl Pauls reassigned FELIX-489:
--------------------------------

    Assignee: Karl Pauls

> 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
>            Assignee: Karl Pauls
>
> 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.