You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "kenny (JIRA)" <ji...@apache.org> on 2012/10/21 06:50:12 UTC

[jira] [Created] (DOSGI-125) The dead lock in TopologyManagerImport

kenny created DOSGI-125:
---------------------------

             Summary: The dead lock in TopologyManagerImport
                 Key: DOSGI-125
                 URL: https://issues.apache.org/jira/browse/DOSGI-125
             Project: CXF Distributed OSGi
          Issue Type: Bug
          Components: DSW
    Affects Versions: 1.3.1
            Reporter: kenny


Hi,All
   I met dead lock!!!

2012-10-21 12:38:27,643 pool-2-thread-1 INFO  service.RemoteServiceAdminCore - importService() Endpoint: {endpoint.id=http://127.0.0.1:9002/nns, objectClass=[Ljava.lang.String;@1f4ea9d, service.imported=true, service.imported.configs=org.apache.cxf.ws}
2012-10-21 12:38:27,645 pool-2-thread-1 INFO  service.RemoteServiceAdminCore - Interfaces: [com.xx.ngoss.einms.nserver.nns.common.service.INNSService]
2012-10-21 12:38:27,647 pool-2-thread-1 INFO  service.RemoteServiceAdminCore - Proxifying interface : com.xx.ngoss.einms.nserver.nns.common.service.INNSService
2012-10-21 12:38:27 org.apache.cxf.dosgi.topologymanager.ListenerHookImpl removed
INFO: ListenerHookImpl: removed: [org.springframework.osgi.extender.internal.dependencies.startup.DependencyServiceManager$DependencyServiceListener@e11a87(objectClass=com.xx.ngoss.einms.nserver.nns.common.service.INNSService)]
2012-10-21 12:38:27 org.apache.cxf.dosgi.topologymanager.ListenerHookImpl removed
INFO: (objectClass=com.xx.ngoss.einms.nserver.nns.common.service.INNSService)

When running here, appeared dead lock,
jconsole message as follows:
Thread:SpringOsgiExtenderThread-7

名称: SpringOsgiExtenderThread-7
状态:BLOCKED 在 java.util.HashMap@16d383a 上,owner: pool-2-thread-1
阻塞总数:10  等待总数: 0

堆栈追踪: 
org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.addImportableService(TopologyManagerImport.java:183)
org.apache.cxf.dosgi.topologymanager.EndpointListenerImpl.endpointAdded(EndpointListenerImpl.java:113)
org.apache.cxf.dosgi.discovery.local.internal.LocalDiscovery.triggerCallbacks(LocalDiscovery.java:221)
org.apache.cxf.dosgi.discovery.local.internal.LocalDiscovery.triggerCallbacks(LocalDiscovery.java:230)
org.apache.cxf.dosgi.discovery.local.internal.LocalDiscovery.registerTracker(LocalDiscovery.java:112)
org.apache.cxf.dosgi.discovery.local.internal.LocalDiscovery$1.modifiedService(LocalDiscovery.java:79)
org.osgi.util.tracker.ServiceTracker$Tracked.customizerModified(ServiceTracker.java:909)
org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:237)
org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:840)
org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:104)
org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:933)
org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:227)
org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:149)
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:756)
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$1.run(ServiceRegistry.java:715)
java.security.AccessController.doPrivileged(Native Method)
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:713)
org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.setProperties(ServiceRegistrationImpl.java:171)
org.apache.cxf.dosgi.topologymanager.EndpointListenerImpl.updateRegistration(EndpointListenerImpl.java:101)
org.apache.cxf.dosgi.topologymanager.EndpointListenerImpl.extendScope(EndpointListenerImpl.java:68)
org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.addServiceInterest(TopologyManagerImport.java:125)
   - 已锁定 java.util.HashMap@196c8c2
org.apache.cxf.dosgi.topologymanager.ListenerHookImpl.added(ListenerHookImpl.java:94)
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyListenerHooksPrivileged(ServiceRegistry.java:1269)
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$5.run(ServiceRegistry.java:1238)
java.security.AccessController.doPrivileged(Native Method)
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyListenerHooks(ServiceRegistry.java:1236)
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.addServiceListener(ServiceRegistry.java:651)
org.eclipse.osgi.framework.internal.core.BundleContextImpl.addServiceListener(BundleContextImpl.java:242)
org.springframework.osgi.util.OsgiListenerUtils.registerListener(OsgiListenerUtils.java:99)
org.springframework.osgi.util.OsgiListenerUtils.addServiceListener(OsgiListenerUtils.java:86)
org.springframework.osgi.extender.internal.dependencies.startup.DependencyServiceManager.register(DependencyServiceManager.java:313)
org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.stageOne(DependencyWaiterApplicationContextExecutor.java:257)
org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.refresh(DependencyWaiterApplicationContextExecutor.java:169)
org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.refresh(AbstractDelegatedExecutionApplicationContext.java:175)
org.springframework.osgi.extender.internal.activator.ContextLoaderListener$2.run(ContextLoaderListener.java:716)
java.lang.Thread.run(Unknown Source)


Thread:pool-2-thread-1

名称: pool-2-thread-1
状态:BLOCKED 在 java.util.HashMap@196c8c2 上,owner: SpringOsgiExtenderThread-7
阻塞总数:2  等待总数: 0

堆栈追踪: 
org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.removeServiceInterest(TopologyManagerImport.java:136)
org.apache.cxf.dosgi.topologymanager.ListenerHookImpl.removed(ListenerHookImpl.java:109)
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyListenerHooksPrivileged(ServiceRegistry.java:1271)
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$5.run(ServiceRegistry.java:1238)
java.security.AccessController.doPrivileged(Native Method)
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyListenerHooks(ServiceRegistry.java:1236)
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.removeServiceListener(ServiceRegistry.java:680)
org.eclipse.osgi.framework.internal.core.BundleContextImpl.removeServiceListener(BundleContextImpl.java:284)
org.springframework.osgi.util.OsgiListenerUtils.removeServiceListener(OsgiListenerUtils.java:190)
org.springframework.osgi.extender.internal.dependencies.startup.DependencyServiceManager.deregister(DependencyServiceManager.java:342)
org.springframework.osgi.extender.internal.dependencies.startup.DependencyServiceManager$DependencyServiceListener.serviceChanged(DependencyServiceManager.java:115)
org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:104)
org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:933)
org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:227)
org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:149)
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:756)
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$1.run(ServiceRegistry.java:715)
java.security.AccessController.doPrivileged(Native Method)
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:713)
org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:206)
org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:507)
org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:525)
org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminCore.proxifyMatchingInterface(RemoteServiceAdminCore.java:449)
org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminCore.importService(RemoteServiceAdminCore.java:405)
   - 已锁定 java.util.LinkedHashMap@130d50a
org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminInstance$2.run(RemoteServiceAdminInstance.java:120)
org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminInstance$2.run(RemoteServiceAdminInstance.java:114)
java.security.AccessController.doPrivileged(Native Method)
org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminInstance.importService(RemoteServiceAdminInstance.java:114)
org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.importService(TopologyManagerImport.java:321)
   - 已锁定 org.apache.cxf.dosgi.topologymanager.RemoteServiceAdminList@f2bc8d
org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.importAllServicesStrategy(TopologyManagerImport.java:246)
org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.access$300(TopologyManagerImport.java:41)
org.apache.cxf.dosgi.topologymanager.TopologyManagerImport$1.run(TopologyManagerImport.java:204)
   - 已锁定 java.util.HashMap@16d383a
   - 已锁定 java.util.HashMap@3905e3
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.lang.Thread.run(Unknown Source)


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

[jira] [Commented] (DOSGI-125) The dead lock in TopologyManagerImport

Posted by "Christian Schneider (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/DOSGI-125?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13486904#comment-13486904 ] 

Christian Schneider commented on DOSGI-125:
-------------------------------------------

I have just done a bigger refactoring of TopologyManager on trunk. I think my change should have removed the possibility of this deadlock. Can you check if it still occurs?
                
> The dead lock in TopologyManagerImport
> --------------------------------------
>
>                 Key: DOSGI-125
>                 URL: https://issues.apache.org/jira/browse/DOSGI-125
>             Project: CXF Distributed OSGi
>          Issue Type: Bug
>          Components: DSW
>    Affects Versions: 1.3.1
>            Reporter: kenny
>              Labels: dosgi-cxf
>
> Hi,All
>    I met dead lock!!!
> 2012-10-21 12:38:27,643 pool-2-thread-1 INFO  service.RemoteServiceAdminCore - importService() Endpoint: {endpoint.id=http://127.0.0.1:9002/nns, objectClass=[Ljava.lang.String;@1f4ea9d, service.imported=true, service.imported.configs=org.apache.cxf.ws}
> 2012-10-21 12:38:27,645 pool-2-thread-1 INFO  service.RemoteServiceAdminCore - Interfaces: [com.xx.ngoss.einms.nserver.nns.common.service.INNSService]
> 2012-10-21 12:38:27,647 pool-2-thread-1 INFO  service.RemoteServiceAdminCore - Proxifying interface : com.xx.ngoss.einms.nserver.nns.common.service.INNSService
> 2012-10-21 12:38:27 org.apache.cxf.dosgi.topologymanager.ListenerHookImpl removed
> INFO: ListenerHookImpl: removed: [org.springframework.osgi.extender.internal.dependencies.startup.DependencyServiceManager$DependencyServiceListener@e11a87(objectClass=com.xx.ngoss.einms.nserver.nns.common.service.INNSService)]
> 2012-10-21 12:38:27 org.apache.cxf.dosgi.topologymanager.ListenerHookImpl removed
> INFO: (objectClass=com.xx.ngoss.einms.nserver.nns.common.service.INNSService)
> When running here, appeared dead lock,
> jconsole message as follows:
> Thread:SpringOsgiExtenderThread-7
> 名称: SpringOsgiExtenderThread-7
> 状态:BLOCKED 在 java.util.HashMap@16d383a 上,owner: pool-2-thread-1
> 阻塞总数:10  等待总数: 0
> 堆栈追踪: 
> org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.addImportableService(TopologyManagerImport.java:183)
> org.apache.cxf.dosgi.topologymanager.EndpointListenerImpl.endpointAdded(EndpointListenerImpl.java:113)
> org.apache.cxf.dosgi.discovery.local.internal.LocalDiscovery.triggerCallbacks(LocalDiscovery.java:221)
> org.apache.cxf.dosgi.discovery.local.internal.LocalDiscovery.triggerCallbacks(LocalDiscovery.java:230)
> org.apache.cxf.dosgi.discovery.local.internal.LocalDiscovery.registerTracker(LocalDiscovery.java:112)
> org.apache.cxf.dosgi.discovery.local.internal.LocalDiscovery$1.modifiedService(LocalDiscovery.java:79)
> org.osgi.util.tracker.ServiceTracker$Tracked.customizerModified(ServiceTracker.java:909)
> org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:237)
> org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:840)
> org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:104)
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:933)
> org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:227)
> org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:149)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:756)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$1.run(ServiceRegistry.java:715)
> java.security.AccessController.doPrivileged(Native Method)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:713)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.setProperties(ServiceRegistrationImpl.java:171)
> org.apache.cxf.dosgi.topologymanager.EndpointListenerImpl.updateRegistration(EndpointListenerImpl.java:101)
> org.apache.cxf.dosgi.topologymanager.EndpointListenerImpl.extendScope(EndpointListenerImpl.java:68)
> org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.addServiceInterest(TopologyManagerImport.java:125)
>    - 已锁定 java.util.HashMap@196c8c2
> org.apache.cxf.dosgi.topologymanager.ListenerHookImpl.added(ListenerHookImpl.java:94)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyListenerHooksPrivileged(ServiceRegistry.java:1269)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$5.run(ServiceRegistry.java:1238)
> java.security.AccessController.doPrivileged(Native Method)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyListenerHooks(ServiceRegistry.java:1236)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.addServiceListener(ServiceRegistry.java:651)
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.addServiceListener(BundleContextImpl.java:242)
> org.springframework.osgi.util.OsgiListenerUtils.registerListener(OsgiListenerUtils.java:99)
> org.springframework.osgi.util.OsgiListenerUtils.addServiceListener(OsgiListenerUtils.java:86)
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyServiceManager.register(DependencyServiceManager.java:313)
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.stageOne(DependencyWaiterApplicationContextExecutor.java:257)
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.refresh(DependencyWaiterApplicationContextExecutor.java:169)
> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.refresh(AbstractDelegatedExecutionApplicationContext.java:175)
> org.springframework.osgi.extender.internal.activator.ContextLoaderListener$2.run(ContextLoaderListener.java:716)
> java.lang.Thread.run(Unknown Source)
> Thread:pool-2-thread-1
> 名称: pool-2-thread-1
> 状态:BLOCKED 在 java.util.HashMap@196c8c2 上,owner: SpringOsgiExtenderThread-7
> 阻塞总数:2  等待总数: 0
> 堆栈追踪: 
> org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.removeServiceInterest(TopologyManagerImport.java:136)
> org.apache.cxf.dosgi.topologymanager.ListenerHookImpl.removed(ListenerHookImpl.java:109)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyListenerHooksPrivileged(ServiceRegistry.java:1271)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$5.run(ServiceRegistry.java:1238)
> java.security.AccessController.doPrivileged(Native Method)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyListenerHooks(ServiceRegistry.java:1236)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.removeServiceListener(ServiceRegistry.java:680)
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.removeServiceListener(BundleContextImpl.java:284)
> org.springframework.osgi.util.OsgiListenerUtils.removeServiceListener(OsgiListenerUtils.java:190)
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyServiceManager.deregister(DependencyServiceManager.java:342)
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyServiceManager$DependencyServiceListener.serviceChanged(DependencyServiceManager.java:115)
> org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:104)
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:933)
> org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:227)
> org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:149)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:756)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$1.run(ServiceRegistry.java:715)
> java.security.AccessController.doPrivileged(Native Method)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:713)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:206)
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:507)
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:525)
> org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminCore.proxifyMatchingInterface(RemoteServiceAdminCore.java:449)
> org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminCore.importService(RemoteServiceAdminCore.java:405)
>    - 已锁定 java.util.LinkedHashMap@130d50a
> org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminInstance$2.run(RemoteServiceAdminInstance.java:120)
> org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminInstance$2.run(RemoteServiceAdminInstance.java:114)
> java.security.AccessController.doPrivileged(Native Method)
> org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminInstance.importService(RemoteServiceAdminInstance.java:114)
> org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.importService(TopologyManagerImport.java:321)
>    - 已锁定 org.apache.cxf.dosgi.topologymanager.RemoteServiceAdminList@f2bc8d
> org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.importAllServicesStrategy(TopologyManagerImport.java:246)
> org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.access$300(TopologyManagerImport.java:41)
> org.apache.cxf.dosgi.topologymanager.TopologyManagerImport$1.run(TopologyManagerImport.java:204)
>    - 已锁定 java.util.HashMap@16d383a
>    - 已锁定 java.util.HashMap@3905e3
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
> java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> java.lang.Thread.run(Unknown Source)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

[jira] [Commented] (DOSGI-125) The dead lock in TopologyManagerImport

Posted by "kenny (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/DOSGI-125?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13480913#comment-13480913 ] 

kenny commented on DOSGI-125:
-----------------------------

My analysis:
       the thread named pool-2-thread-1 dispatched a synchronized event,therefore,it not finished until event dispatched.so,producing deadlock.

org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:149)
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:756)
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$1.run(ServiceRegistry.java:715)
java.security.AccessController.doPrivileged(Native Method)
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:713)
org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:206)
org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:507)
org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:525)
org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminCore.proxifyMatchingInterface(RemoteServiceAdminCore.java:449)
org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminCore.importService(RemoteServiceAdminCore.java:405)
已锁定 java.util.LinkedHashMap@130d50a
org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminInstance$2.run(RemoteServiceAdminInstance.java:120)
org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminInstance$2.run(RemoteServiceAdminInstance.java:114)
java.security.AccessController.doPrivileged(Native Method)
org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminInstance.importService(RemoteServiceAdminInstance.java:114)
org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.importService(TopologyManagerImport.java:321)
已锁定 org.apache.cxf.dosgi.topologymanager.RemoteServiceAdminList@f2bc8d
org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.importAllServicesStrategy(TopologyManagerImport.java:246)
org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.access$300(TopologyManagerImport.java:41)
org.apache.cxf.dosgi.topologymanager.TopologyManagerImport$1.run(TopologyManagerImport.java:204)
已锁定 java.util.HashMap@16d383a
已锁定 java.util.HashMap@3905e3
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.lang.Thread.run(Unknown Source)
                
> The dead lock in TopologyManagerImport
> --------------------------------------
>
>                 Key: DOSGI-125
>                 URL: https://issues.apache.org/jira/browse/DOSGI-125
>             Project: CXF Distributed OSGi
>          Issue Type: Bug
>          Components: DSW
>    Affects Versions: 1.3.1
>            Reporter: kenny
>              Labels: dosgi-cxf
>
> Hi,All
>    I met dead lock!!!
> 2012-10-21 12:38:27,643 pool-2-thread-1 INFO  service.RemoteServiceAdminCore - importService() Endpoint: {endpoint.id=http://127.0.0.1:9002/nns, objectClass=[Ljava.lang.String;@1f4ea9d, service.imported=true, service.imported.configs=org.apache.cxf.ws}
> 2012-10-21 12:38:27,645 pool-2-thread-1 INFO  service.RemoteServiceAdminCore - Interfaces: [com.xx.ngoss.einms.nserver.nns.common.service.INNSService]
> 2012-10-21 12:38:27,647 pool-2-thread-1 INFO  service.RemoteServiceAdminCore - Proxifying interface : com.xx.ngoss.einms.nserver.nns.common.service.INNSService
> 2012-10-21 12:38:27 org.apache.cxf.dosgi.topologymanager.ListenerHookImpl removed
> INFO: ListenerHookImpl: removed: [org.springframework.osgi.extender.internal.dependencies.startup.DependencyServiceManager$DependencyServiceListener@e11a87(objectClass=com.xx.ngoss.einms.nserver.nns.common.service.INNSService)]
> 2012-10-21 12:38:27 org.apache.cxf.dosgi.topologymanager.ListenerHookImpl removed
> INFO: (objectClass=com.xx.ngoss.einms.nserver.nns.common.service.INNSService)
> When running here, appeared dead lock,
> jconsole message as follows:
> Thread:SpringOsgiExtenderThread-7
> 名称: SpringOsgiExtenderThread-7
> 状态:BLOCKED 在 java.util.HashMap@16d383a 上,owner: pool-2-thread-1
> 阻塞总数:10  等待总数: 0
> 堆栈追踪: 
> org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.addImportableService(TopologyManagerImport.java:183)
> org.apache.cxf.dosgi.topologymanager.EndpointListenerImpl.endpointAdded(EndpointListenerImpl.java:113)
> org.apache.cxf.dosgi.discovery.local.internal.LocalDiscovery.triggerCallbacks(LocalDiscovery.java:221)
> org.apache.cxf.dosgi.discovery.local.internal.LocalDiscovery.triggerCallbacks(LocalDiscovery.java:230)
> org.apache.cxf.dosgi.discovery.local.internal.LocalDiscovery.registerTracker(LocalDiscovery.java:112)
> org.apache.cxf.dosgi.discovery.local.internal.LocalDiscovery$1.modifiedService(LocalDiscovery.java:79)
> org.osgi.util.tracker.ServiceTracker$Tracked.customizerModified(ServiceTracker.java:909)
> org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:237)
> org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:840)
> org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:104)
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:933)
> org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:227)
> org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:149)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:756)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$1.run(ServiceRegistry.java:715)
> java.security.AccessController.doPrivileged(Native Method)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:713)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.setProperties(ServiceRegistrationImpl.java:171)
> org.apache.cxf.dosgi.topologymanager.EndpointListenerImpl.updateRegistration(EndpointListenerImpl.java:101)
> org.apache.cxf.dosgi.topologymanager.EndpointListenerImpl.extendScope(EndpointListenerImpl.java:68)
> org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.addServiceInterest(TopologyManagerImport.java:125)
>    - 已锁定 java.util.HashMap@196c8c2
> org.apache.cxf.dosgi.topologymanager.ListenerHookImpl.added(ListenerHookImpl.java:94)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyListenerHooksPrivileged(ServiceRegistry.java:1269)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$5.run(ServiceRegistry.java:1238)
> java.security.AccessController.doPrivileged(Native Method)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyListenerHooks(ServiceRegistry.java:1236)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.addServiceListener(ServiceRegistry.java:651)
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.addServiceListener(BundleContextImpl.java:242)
> org.springframework.osgi.util.OsgiListenerUtils.registerListener(OsgiListenerUtils.java:99)
> org.springframework.osgi.util.OsgiListenerUtils.addServiceListener(OsgiListenerUtils.java:86)
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyServiceManager.register(DependencyServiceManager.java:313)
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.stageOne(DependencyWaiterApplicationContextExecutor.java:257)
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.refresh(DependencyWaiterApplicationContextExecutor.java:169)
> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.refresh(AbstractDelegatedExecutionApplicationContext.java:175)
> org.springframework.osgi.extender.internal.activator.ContextLoaderListener$2.run(ContextLoaderListener.java:716)
> java.lang.Thread.run(Unknown Source)
> Thread:pool-2-thread-1
> 名称: pool-2-thread-1
> 状态:BLOCKED 在 java.util.HashMap@196c8c2 上,owner: SpringOsgiExtenderThread-7
> 阻塞总数:2  等待总数: 0
> 堆栈追踪: 
> org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.removeServiceInterest(TopologyManagerImport.java:136)
> org.apache.cxf.dosgi.topologymanager.ListenerHookImpl.removed(ListenerHookImpl.java:109)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyListenerHooksPrivileged(ServiceRegistry.java:1271)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$5.run(ServiceRegistry.java:1238)
> java.security.AccessController.doPrivileged(Native Method)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyListenerHooks(ServiceRegistry.java:1236)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.removeServiceListener(ServiceRegistry.java:680)
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.removeServiceListener(BundleContextImpl.java:284)
> org.springframework.osgi.util.OsgiListenerUtils.removeServiceListener(OsgiListenerUtils.java:190)
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyServiceManager.deregister(DependencyServiceManager.java:342)
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyServiceManager$DependencyServiceListener.serviceChanged(DependencyServiceManager.java:115)
> org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:104)
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:933)
> org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:227)
> org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:149)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:756)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$1.run(ServiceRegistry.java:715)
> java.security.AccessController.doPrivileged(Native Method)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:713)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:206)
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:507)
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:525)
> org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminCore.proxifyMatchingInterface(RemoteServiceAdminCore.java:449)
> org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminCore.importService(RemoteServiceAdminCore.java:405)
>    - 已锁定 java.util.LinkedHashMap@130d50a
> org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminInstance$2.run(RemoteServiceAdminInstance.java:120)
> org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminInstance$2.run(RemoteServiceAdminInstance.java:114)
> java.security.AccessController.doPrivileged(Native Method)
> org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminInstance.importService(RemoteServiceAdminInstance.java:114)
> org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.importService(TopologyManagerImport.java:321)
>    - 已锁定 org.apache.cxf.dosgi.topologymanager.RemoteServiceAdminList@f2bc8d
> org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.importAllServicesStrategy(TopologyManagerImport.java:246)
> org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.access$300(TopologyManagerImport.java:41)
> org.apache.cxf.dosgi.topologymanager.TopologyManagerImport$1.run(TopologyManagerImport.java:204)
>    - 已锁定 java.util.HashMap@16d383a
>    - 已锁定 java.util.HashMap@3905e3
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
> java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> java.lang.Thread.run(Unknown Source)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

[jira] [Resolved] (DOSGI-125) The dead lock in TopologyManagerImport

Posted by "Christian Schneider (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/DOSGI-125?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Christian Schneider resolved DOSGI-125.
---------------------------------------

       Resolution: Fixed
    Fix Version/s: 1.4
         Assignee: Christian Schneider

Resolving issue as we have no feedback. Please reopen if the deadlock still occurs.
                
> The dead lock in TopologyManagerImport
> --------------------------------------
>
>                 Key: DOSGI-125
>                 URL: https://issues.apache.org/jira/browse/DOSGI-125
>             Project: CXF Distributed OSGi
>          Issue Type: Bug
>          Components: DSW
>    Affects Versions: 1.3.1
>            Reporter: kenny
>            Assignee: Christian Schneider
>              Labels: dosgi-cxf
>             Fix For: 1.4
>
>
> Hi,All
>    I met dead lock!!!
> 2012-10-21 12:38:27,643 pool-2-thread-1 INFO  service.RemoteServiceAdminCore - importService() Endpoint: {endpoint.id=http://127.0.0.1:9002/nns, objectClass=[Ljava.lang.String;@1f4ea9d, service.imported=true, service.imported.configs=org.apache.cxf.ws}
> 2012-10-21 12:38:27,645 pool-2-thread-1 INFO  service.RemoteServiceAdminCore - Interfaces: [com.xx.ngoss.einms.nserver.nns.common.service.INNSService]
> 2012-10-21 12:38:27,647 pool-2-thread-1 INFO  service.RemoteServiceAdminCore - Proxifying interface : com.xx.ngoss.einms.nserver.nns.common.service.INNSService
> 2012-10-21 12:38:27 org.apache.cxf.dosgi.topologymanager.ListenerHookImpl removed
> INFO: ListenerHookImpl: removed: [org.springframework.osgi.extender.internal.dependencies.startup.DependencyServiceManager$DependencyServiceListener@e11a87(objectClass=com.xx.ngoss.einms.nserver.nns.common.service.INNSService)]
> 2012-10-21 12:38:27 org.apache.cxf.dosgi.topologymanager.ListenerHookImpl removed
> INFO: (objectClass=com.xx.ngoss.einms.nserver.nns.common.service.INNSService)
> When running here, appeared dead lock,
> jconsole message as follows:
> Thread:SpringOsgiExtenderThread-7
> 名称: SpringOsgiExtenderThread-7
> 状态:BLOCKED 在 java.util.HashMap@16d383a 上,owner: pool-2-thread-1
> 阻塞总数:10  等待总数: 0
> 堆栈追踪: 
> org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.addImportableService(TopologyManagerImport.java:183)
> org.apache.cxf.dosgi.topologymanager.EndpointListenerImpl.endpointAdded(EndpointListenerImpl.java:113)
> org.apache.cxf.dosgi.discovery.local.internal.LocalDiscovery.triggerCallbacks(LocalDiscovery.java:221)
> org.apache.cxf.dosgi.discovery.local.internal.LocalDiscovery.triggerCallbacks(LocalDiscovery.java:230)
> org.apache.cxf.dosgi.discovery.local.internal.LocalDiscovery.registerTracker(LocalDiscovery.java:112)
> org.apache.cxf.dosgi.discovery.local.internal.LocalDiscovery$1.modifiedService(LocalDiscovery.java:79)
> org.osgi.util.tracker.ServiceTracker$Tracked.customizerModified(ServiceTracker.java:909)
> org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:237)
> org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:840)
> org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:104)
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:933)
> org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:227)
> org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:149)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:756)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$1.run(ServiceRegistry.java:715)
> java.security.AccessController.doPrivileged(Native Method)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:713)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.setProperties(ServiceRegistrationImpl.java:171)
> org.apache.cxf.dosgi.topologymanager.EndpointListenerImpl.updateRegistration(EndpointListenerImpl.java:101)
> org.apache.cxf.dosgi.topologymanager.EndpointListenerImpl.extendScope(EndpointListenerImpl.java:68)
> org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.addServiceInterest(TopologyManagerImport.java:125)
>    - 已锁定 java.util.HashMap@196c8c2
> org.apache.cxf.dosgi.topologymanager.ListenerHookImpl.added(ListenerHookImpl.java:94)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyListenerHooksPrivileged(ServiceRegistry.java:1269)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$5.run(ServiceRegistry.java:1238)
> java.security.AccessController.doPrivileged(Native Method)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyListenerHooks(ServiceRegistry.java:1236)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.addServiceListener(ServiceRegistry.java:651)
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.addServiceListener(BundleContextImpl.java:242)
> org.springframework.osgi.util.OsgiListenerUtils.registerListener(OsgiListenerUtils.java:99)
> org.springframework.osgi.util.OsgiListenerUtils.addServiceListener(OsgiListenerUtils.java:86)
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyServiceManager.register(DependencyServiceManager.java:313)
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.stageOne(DependencyWaiterApplicationContextExecutor.java:257)
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.refresh(DependencyWaiterApplicationContextExecutor.java:169)
> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.refresh(AbstractDelegatedExecutionApplicationContext.java:175)
> org.springframework.osgi.extender.internal.activator.ContextLoaderListener$2.run(ContextLoaderListener.java:716)
> java.lang.Thread.run(Unknown Source)
> Thread:pool-2-thread-1
> 名称: pool-2-thread-1
> 状态:BLOCKED 在 java.util.HashMap@196c8c2 上,owner: SpringOsgiExtenderThread-7
> 阻塞总数:2  等待总数: 0
> 堆栈追踪: 
> org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.removeServiceInterest(TopologyManagerImport.java:136)
> org.apache.cxf.dosgi.topologymanager.ListenerHookImpl.removed(ListenerHookImpl.java:109)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyListenerHooksPrivileged(ServiceRegistry.java:1271)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$5.run(ServiceRegistry.java:1238)
> java.security.AccessController.doPrivileged(Native Method)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyListenerHooks(ServiceRegistry.java:1236)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.removeServiceListener(ServiceRegistry.java:680)
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.removeServiceListener(BundleContextImpl.java:284)
> org.springframework.osgi.util.OsgiListenerUtils.removeServiceListener(OsgiListenerUtils.java:190)
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyServiceManager.deregister(DependencyServiceManager.java:342)
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyServiceManager$DependencyServiceListener.serviceChanged(DependencyServiceManager.java:115)
> org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:104)
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:933)
> org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:227)
> org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:149)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:756)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$1.run(ServiceRegistry.java:715)
> java.security.AccessController.doPrivileged(Native Method)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:713)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:206)
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:507)
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:525)
> org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminCore.proxifyMatchingInterface(RemoteServiceAdminCore.java:449)
> org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminCore.importService(RemoteServiceAdminCore.java:405)
>    - 已锁定 java.util.LinkedHashMap@130d50a
> org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminInstance$2.run(RemoteServiceAdminInstance.java:120)
> org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminInstance$2.run(RemoteServiceAdminInstance.java:114)
> java.security.AccessController.doPrivileged(Native Method)
> org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminInstance.importService(RemoteServiceAdminInstance.java:114)
> org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.importService(TopologyManagerImport.java:321)
>    - 已锁定 org.apache.cxf.dosgi.topologymanager.RemoteServiceAdminList@f2bc8d
> org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.importAllServicesStrategy(TopologyManagerImport.java:246)
> org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.access$300(TopologyManagerImport.java:41)
> org.apache.cxf.dosgi.topologymanager.TopologyManagerImport$1.run(TopologyManagerImport.java:204)
>    - 已锁定 java.util.HashMap@16d383a
>    - 已锁定 java.util.HashMap@3905e3
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
> java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> java.lang.Thread.run(Unknown Source)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

[jira] [Commented] (DOSGI-125) The dead lock in TopologyManagerImport

Posted by "kenny (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/DOSGI-125?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13480927#comment-13480927 ] 

kenny commented on DOSGI-125:
-----------------------------

I modified parts as follows:
private void triggerImport(final String filter) {

        LOG.log(Level.FINE, "import of a service for filter {0} was queued", filter);

        execService.execute(new Runnable() {
            public void run() {
            	//add by kenny for  resoving deadlock
				synchronized (importInterests) {
					synchronized (importedServices) { // deadlock possibility ?
						synchronized (importPossibilities) {
							if (importAllAvailable) {
								importAllServicesStrategy(filter);
							} else {
								importSingleServiceStrategy(filter);
							}
						}
					}}
                // Notify EndpointListeners ? NO!
            }

        });

    }

After the above changes, the deadlock problem is no longer produced.
But,I'm not sure whether it will introduce other problems...
                
> The dead lock in TopologyManagerImport
> --------------------------------------
>
>                 Key: DOSGI-125
>                 URL: https://issues.apache.org/jira/browse/DOSGI-125
>             Project: CXF Distributed OSGi
>          Issue Type: Bug
>          Components: DSW
>    Affects Versions: 1.3.1
>            Reporter: kenny
>              Labels: dosgi-cxf
>
> Hi,All
>    I met dead lock!!!
> 2012-10-21 12:38:27,643 pool-2-thread-1 INFO  service.RemoteServiceAdminCore - importService() Endpoint: {endpoint.id=http://127.0.0.1:9002/nns, objectClass=[Ljava.lang.String;@1f4ea9d, service.imported=true, service.imported.configs=org.apache.cxf.ws}
> 2012-10-21 12:38:27,645 pool-2-thread-1 INFO  service.RemoteServiceAdminCore - Interfaces: [com.xx.ngoss.einms.nserver.nns.common.service.INNSService]
> 2012-10-21 12:38:27,647 pool-2-thread-1 INFO  service.RemoteServiceAdminCore - Proxifying interface : com.xx.ngoss.einms.nserver.nns.common.service.INNSService
> 2012-10-21 12:38:27 org.apache.cxf.dosgi.topologymanager.ListenerHookImpl removed
> INFO: ListenerHookImpl: removed: [org.springframework.osgi.extender.internal.dependencies.startup.DependencyServiceManager$DependencyServiceListener@e11a87(objectClass=com.xx.ngoss.einms.nserver.nns.common.service.INNSService)]
> 2012-10-21 12:38:27 org.apache.cxf.dosgi.topologymanager.ListenerHookImpl removed
> INFO: (objectClass=com.xx.ngoss.einms.nserver.nns.common.service.INNSService)
> When running here, appeared dead lock,
> jconsole message as follows:
> Thread:SpringOsgiExtenderThread-7
> 名称: SpringOsgiExtenderThread-7
> 状态:BLOCKED 在 java.util.HashMap@16d383a 上,owner: pool-2-thread-1
> 阻塞总数:10  等待总数: 0
> 堆栈追踪: 
> org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.addImportableService(TopologyManagerImport.java:183)
> org.apache.cxf.dosgi.topologymanager.EndpointListenerImpl.endpointAdded(EndpointListenerImpl.java:113)
> org.apache.cxf.dosgi.discovery.local.internal.LocalDiscovery.triggerCallbacks(LocalDiscovery.java:221)
> org.apache.cxf.dosgi.discovery.local.internal.LocalDiscovery.triggerCallbacks(LocalDiscovery.java:230)
> org.apache.cxf.dosgi.discovery.local.internal.LocalDiscovery.registerTracker(LocalDiscovery.java:112)
> org.apache.cxf.dosgi.discovery.local.internal.LocalDiscovery$1.modifiedService(LocalDiscovery.java:79)
> org.osgi.util.tracker.ServiceTracker$Tracked.customizerModified(ServiceTracker.java:909)
> org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:237)
> org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:840)
> org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:104)
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:933)
> org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:227)
> org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:149)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:756)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$1.run(ServiceRegistry.java:715)
> java.security.AccessController.doPrivileged(Native Method)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:713)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.setProperties(ServiceRegistrationImpl.java:171)
> org.apache.cxf.dosgi.topologymanager.EndpointListenerImpl.updateRegistration(EndpointListenerImpl.java:101)
> org.apache.cxf.dosgi.topologymanager.EndpointListenerImpl.extendScope(EndpointListenerImpl.java:68)
> org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.addServiceInterest(TopologyManagerImport.java:125)
>    - 已锁定 java.util.HashMap@196c8c2
> org.apache.cxf.dosgi.topologymanager.ListenerHookImpl.added(ListenerHookImpl.java:94)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyListenerHooksPrivileged(ServiceRegistry.java:1269)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$5.run(ServiceRegistry.java:1238)
> java.security.AccessController.doPrivileged(Native Method)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyListenerHooks(ServiceRegistry.java:1236)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.addServiceListener(ServiceRegistry.java:651)
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.addServiceListener(BundleContextImpl.java:242)
> org.springframework.osgi.util.OsgiListenerUtils.registerListener(OsgiListenerUtils.java:99)
> org.springframework.osgi.util.OsgiListenerUtils.addServiceListener(OsgiListenerUtils.java:86)
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyServiceManager.register(DependencyServiceManager.java:313)
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.stageOne(DependencyWaiterApplicationContextExecutor.java:257)
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.refresh(DependencyWaiterApplicationContextExecutor.java:169)
> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.refresh(AbstractDelegatedExecutionApplicationContext.java:175)
> org.springframework.osgi.extender.internal.activator.ContextLoaderListener$2.run(ContextLoaderListener.java:716)
> java.lang.Thread.run(Unknown Source)
> Thread:pool-2-thread-1
> 名称: pool-2-thread-1
> 状态:BLOCKED 在 java.util.HashMap@196c8c2 上,owner: SpringOsgiExtenderThread-7
> 阻塞总数:2  等待总数: 0
> 堆栈追踪: 
> org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.removeServiceInterest(TopologyManagerImport.java:136)
> org.apache.cxf.dosgi.topologymanager.ListenerHookImpl.removed(ListenerHookImpl.java:109)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyListenerHooksPrivileged(ServiceRegistry.java:1271)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$5.run(ServiceRegistry.java:1238)
> java.security.AccessController.doPrivileged(Native Method)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyListenerHooks(ServiceRegistry.java:1236)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.removeServiceListener(ServiceRegistry.java:680)
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.removeServiceListener(BundleContextImpl.java:284)
> org.springframework.osgi.util.OsgiListenerUtils.removeServiceListener(OsgiListenerUtils.java:190)
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyServiceManager.deregister(DependencyServiceManager.java:342)
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyServiceManager$DependencyServiceListener.serviceChanged(DependencyServiceManager.java:115)
> org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:104)
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:933)
> org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:227)
> org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:149)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:756)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$1.run(ServiceRegistry.java:715)
> java.security.AccessController.doPrivileged(Native Method)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:713)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
> org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:206)
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:507)
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:525)
> org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminCore.proxifyMatchingInterface(RemoteServiceAdminCore.java:449)
> org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminCore.importService(RemoteServiceAdminCore.java:405)
>    - 已锁定 java.util.LinkedHashMap@130d50a
> org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminInstance$2.run(RemoteServiceAdminInstance.java:120)
> org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminInstance$2.run(RemoteServiceAdminInstance.java:114)
> java.security.AccessController.doPrivileged(Native Method)
> org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminInstance.importService(RemoteServiceAdminInstance.java:114)
> org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.importService(TopologyManagerImport.java:321)
>    - 已锁定 org.apache.cxf.dosgi.topologymanager.RemoteServiceAdminList@f2bc8d
> org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.importAllServicesStrategy(TopologyManagerImport.java:246)
> org.apache.cxf.dosgi.topologymanager.TopologyManagerImport.access$300(TopologyManagerImport.java:41)
> org.apache.cxf.dosgi.topologymanager.TopologyManagerImport$1.run(TopologyManagerImport.java:204)
>    - 已锁定 java.util.HashMap@16d383a
>    - 已锁定 java.util.HashMap@3905e3
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
> java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> java.lang.Thread.run(Unknown Source)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira