You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@dubbo.apache.org by GitBox <gi...@apache.org> on 2022/12/17 13:05:14 UTC

[GitHub] [dubbo] qixiaobo commented on issue #6037: Deadlock occurs at RegistryDirectory.notify() with DefaultSingletonBeanRegistry.getSingleton()

qixiaobo commented on issue #6037:
URL: https://github.com/apache/dubbo/issues/6037#issuecomment-1356253982

   The same problem in 2.6.x
   ```plain
   "main-EventThread":
     waiting to lock monitor 0x00007f5ca4006218 (object 0x00000000d60c4428, a java.util.concurrent.ConcurrentHashMap),
     which is held by "main"
   "main":
     waiting to lock monitor 0x00007f5cc4492868 (object 0x00000000dc9ee708, a com.alibaba.dubbo.common.utils.Holder),
     which is held by "main-EventThread"
   
   Java stack information for the threads listed above:
   ===================================================
   "main-EventThread":
   	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:187)
   	- waiting to lock <0x00000000d60c4428> (a java.util.concurrent.ConcurrentHashMap)
   	at org.springframework.beans.factory.support.AbstractBeanFactory.isTypeMatch(AbstractBeanFactory.java:486)
   	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:432)
   	at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:403)
   	at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:389)
   	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveNamedBean(DefaultListableBeanFactory.java:1002)
   	at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:345)
   	at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:340)
   	at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1090)
   	at com.alibaba.dubbo.config.spring.extension.SpringExtensionFactory.getExtension(SpringExtensionFactory.java:67)
   	at com.alibaba.dubbo.common.extension.factory.AdaptiveExtensionFactory.getExtension(AdaptiveExtensionFactory.java:47)
   	at com.alibaba.dubbo.common.extension.ExtensionLoader.injectExtension(ExtensionLoader.java:521)
   	at com.alibaba.dubbo.common.extension.ExtensionLoader.createExtension(ExtensionLoader.java:497)
   	at com.alibaba.dubbo.common.extension.ExtensionLoader.getExtension(ExtensionLoader.java:309)
   	- locked <0x00000000dc9ee708> (a com.alibaba.dubbo.common.utils.Holder)
   	at com.alibaba.dubbo.common.extension.ExtensionLoader.getActivateExtension(ExtensionLoader.java:193)
   	at com.alibaba.dubbo.common.extension.ExtensionLoader.getActivateExtension(ExtensionLoader.java:172)
   	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper.buildInvokerChain(ProtocolFilterWrapper.java:48)
   	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper.refer(ProtocolFilterWrapper.java:108)
   	at com.alibaba.dubbo.qos.protocol.QosProtocolWrapper.refer(QosProtocolWrapper.java:71)
   	at com.alibaba.dubbo.rpc.protocol.ProtocolListenerWrapper.refer(ProtocolListenerWrapper.java:67)
   	at com.alibaba.dubbo.rpc.Protocol$Adaptive.refer(Protocol$Adaptive.java)
   	at com.alibaba.dubbo.registry.integration.RegistryDirectory.toInvokers(RegistryDirectory.java:387)
   	at com.alibaba.dubbo.registry.integration.RegistryDirectory.refreshInvoker(RegistryDirectory.java:253)
   	at com.alibaba.dubbo.registry.integration.RegistryDirectory.notify(RegistryDirectory.java:223)
   	- locked <0x00000000d7f03c28> (a com.alibaba.dubbo.registry.integration.RegistryDirectory)
   	at com.alibaba.dubbo.registry.support.AbstractRegistry.notify(AbstractRegistry.java:414)
   	at com.alibaba.dubbo.registry.support.FailbackRegistry.doNotify(FailbackRegistry.java:280)
   	at com.alibaba.dubbo.registry.support.FailbackRegistry.notify(FailbackRegistry.java:266)
   	at com.alibaba.dubbo.registry.zookeeper.ZookeeperRegistry.access$400(ZookeeperRegistry.java:43)
   	at com.alibaba.dubbo.registry.zookeeper.ZookeeperRegistry$3.childChanged(ZookeeperRegistry.java:179)
   	at com.alibaba.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient$CuratorWatcherImpl.process(CuratorZookeeperClient.java:171)
   	at org.apache.curator.framework.imps.NamespaceWatcher.process(NamespaceWatcher.java:68)
   	at org.apache.zookeeper.ClientCnxn$EventThread.processEvent(ClientCnxn.java:522)
   	at org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:498)
   "main":
   	at com.alibaba.dubbo.common.extension.ExtensionLoader.getExtension(ExtensionLoader.java:307)
   	- waiting to lock <0x00000000dc9ee708> (a com.alibaba.dubbo.common.utils.Holder)
   	at com.alibaba.dubbo.common.extension.ExtensionLoader.getActivateExtension(ExtensionLoader.java:193)
   	at com.alibaba.dubbo.common.extension.ExtensionLoader.getActivateExtension(ExtensionLoader.java:172)
   	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper.buildInvokerChain(ProtocolFilterWrapper.java:48)
   	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper.refer(ProtocolFilterWrapper.java:108)
   	at com.alibaba.dubbo.qos.protocol.QosProtocolWrapper.refer(QosProtocolWrapper.java:71)
   	at com.alibaba.dubbo.rpc.protocol.ProtocolListenerWrapper.refer(ProtocolListenerWrapper.java:67)
   	at com.alibaba.dubbo.rpc.Protocol$Adaptive.refer(Protocol$Adaptive.java)
   	at com.alibaba.dubbo.registry.integration.RegistryDirectory.toInvokers(RegistryDirectory.java:387)
   	at com.alibaba.dubbo.registry.integration.RegistryDirectory.refreshInvoker(RegistryDirectory.java:253)
   	at com.alibaba.dubbo.registry.integration.RegistryDirectory.notify(RegistryDirectory.java:223)
   	- locked <0x00000000d345c6a8> (a com.alibaba.dubbo.registry.integration.RegistryDirectory)
   	at com.alibaba.dubbo.registry.support.AbstractRegistry.notify(AbstractRegistry.java:414)
   	at com.alibaba.dubbo.registry.support.FailbackRegistry.doNotify(FailbackRegistry.java:280)
   	at com.alibaba.dubbo.registry.support.FailbackRegistry.notify(FailbackRegistry.java:266)
   	at com.alibaba.dubbo.registry.zookeeper.ZookeeperRegistry.doSubscribe(ZookeeperRegistry.java:190)
   	at com.alibaba.dubbo.registry.support.FailbackRegistry.subscribe(FailbackRegistry.java:196)
   	at com.alibaba.dubbo.registry.integration.RegistryDirectory.subscribe(RegistryDirectory.java:159)
   	at com.alibaba.dubbo.registry.integration.RegistryProtocol.doRefer(RegistryProtocol.java:306)
   	at com.alibaba.dubbo.registry.integration.RegistryProtocol.refer(RegistryProtocol.java:287)
   	at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper.refer(ProtocolFilterWrapper.java:106)
   	at com.alibaba.dubbo.qos.protocol.QosProtocolWrapper.refer(QosProtocolWrapper.java:69)
   	at com.alibaba.dubbo.rpc.protocol.ProtocolListenerWrapper.refer(ProtocolListenerWrapper.java:65)
   	at com.alibaba.dubbo.rpc.Protocol$Adaptive.refer(Protocol$Adaptive.java)
   	at com.alibaba.dubbo.config.ReferenceConfig.createProxy(ReferenceConfig.java:394)
   	at com.alibaba.dubbo.config.ReferenceConfig.init(ReferenceConfig.java:333)
   	at com.alibaba.dubbo.config.ReferenceConfig.get(ReferenceConfig.java:163)
   	- locked <0x00000000d3494fe8> (a com.alibaba.dubbo.config.spring.ReferenceBean)
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org