Skip to content

Found one Java-level deadlock at startup #11193

@wuwen5

Description

@wuwen5
  • I have searched the issues of this repository and believe that this is not a duplicate.

Environment

  • Dubbo version: 3.1.3,3.1.5-snapshot
  • Operating System version: mac os 12
  • Java version: 1.8

Steps to reproduce this issue

  1. When a timer calls the dubbo service at startup

Pls. provide [GitHub address] to reproduce this issue.

Expected Behavior

Actual Behavior

If there is an exception, please attach the exception trace:

Found one Java-level deadlock:
=============================
"Timer-1":
  waiting to lock monitor 0x000000015b48b420 (object 0x00000005c0742138, a java.util.concurrent.ConcurrentHashMap),
  which is held by "main"
"main":
  waiting to lock monitor 0x000000013a5413a0 (object 0x00000005c100c958, a org.apache.dubbo.config.deploy.DefaultModuleDeployer),
  which is held by "Timer-1"

Java stack information for the threads listed above:
===================================================
"Timer-1":
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:216)
	- waiting to lock <0x00000005c0742138> (a java.util.concurrent.ConcurrentHashMap)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:213)
	at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1160)
	at org.apache.dubbo.config.spring.extension.SpringExtensionInjector.getOptionalBean(SpringExtensionInjector.java:78)
	at org.apache.dubbo.config.spring.extension.SpringExtensionInjector.getInstance(SpringExtensionInjector.java:64)
	at org.apache.dubbo.common.extension.inject.AdaptiveExtensionInjector.lambda$getInstance$0(AdaptiveExtensionInjector.java:58)
	at org.apache.dubbo.common.extension.inject.AdaptiveExtensionInjector$$Lambda$450/1638051511.apply(Unknown Source)
	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
	at java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1361)
	at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
	at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:499)
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:486)
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
	at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)
	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:531)
	at org.apache.dubbo.common.extension.inject.AdaptiveExtensionInjector.getInstance(AdaptiveExtensionInjector.java:60)
	at org.apache.dubbo.common.extension.ExtensionLoader.injectExtension(ExtensionLoader.java:876)
	at org.apache.dubbo.common.extension.ExtensionLoader.createExtension(ExtensionLoader.java:775)
	at org.apache.dubbo.common.extension.ExtensionLoader.getExtension(ExtensionLoader.java:561)
	- locked <0x000000071aa3b240> (a org.apache.dubbo.common.utils.Holder)
	at org.apache.dubbo.common.extension.ExtensionLoader.getExtension(ExtensionLoader.java:535)
	at org.apache.dubbo.common.extension.ExtensionLoader.getActivateExtension(ExtensionLoader.java:420)
	at org.apache.dubbo.common.extension.ExtensionLoader.getActivateExtension(ExtensionLoader.java:320)
	at org.apache.dubbo.rpc.cluster.filter.DefaultFilterChainBuilder.buildInvokerChain(DefaultFilterChainBuilder.java:50)
	at org.apache.dubbo.rpc.cluster.filter.ProtocolFilterWrapper.refer(ProtocolFilterWrapper.java:74)
	at org.apache.dubbo.rpc.protocol.ProtocolSerializationWrapper.refer(ProtocolSerializationWrapper.java:52)
	at org.apache.dubbo.rpc.Protocol$Adaptive.refer(Protocol$Adaptive.java)
	at org.apache.dubbo.registry.client.ServiceDiscoveryRegistryDirectory.toInvokers(ServiceDiscoveryRegistryDirectory.java:352)
	at org.apache.dubbo.registry.client.ServiceDiscoveryRegistryDirectory.refreshInvoker(ServiceDiscoveryRegistryDirectory.java:254)
	at org.apache.dubbo.registry.client.ServiceDiscoveryRegistryDirectory.refreshOverrideAndInvoker(ServiceDiscoveryRegistryDirectory.java:182)
	- locked <0x0000000718a10cb0> (a org.apache.dubbo.registry.client.ServiceDiscoveryRegistryDirectory)
	at org.apache.dubbo.registry.client.ServiceDiscoveryRegistryDirectory.notify(ServiceDiscoveryRegistryDirectory.java:176)
	- locked <0x0000000718a10cb0> (a org.apache.dubbo.registry.client.ServiceDiscoveryRegistryDirectory)
	at org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener.addListenerAndNotify(ServiceInstancesChangedListener.java:237)
	- locked <0x000000071901a7e0> (a org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener)
	at org.apache.dubbo.registry.client.ServiceDiscoveryRegistry.subscribeURLs(ServiceDiscoveryRegistry.java:326)
	at org.apache.dubbo.registry.client.ServiceDiscoveryRegistry.doSubscribe(ServiceDiscoveryRegistry.java:217)
	at org.apache.dubbo.registry.client.ServiceDiscoveryRegistry.subscribe(ServiceDiscoveryRegistry.java:185)
	at org.apache.dubbo.registry.ListenerRegistryWrapper.subscribe(ListenerRegistryWrapper.java:88)
	at org.apache.dubbo.registry.integration.DynamicDirectory.subscribe(DynamicDirectory.java:183)
	at org.apache.dubbo.registry.client.ServiceDiscoveryRegistryDirectory.subscribe(ServiceDiscoveryRegistryDirectory.java:127)
	at org.apache.dubbo.registry.integration.RegistryProtocol.doCreateInvoker(RegistryProtocol.java:569)
	at org.apache.dubbo.registry.integration.InterfaceCompatibleRegistryProtocol.getServiceDiscoveryInvoker(InterfaceCompatibleRegistryProtocol.java:65)
	at org.apache.dubbo.registry.client.migration.MigrationInvoker.refreshServiceDiscoveryInvoker(MigrationInvoker.java:437)
	at org.apache.dubbo.registry.client.migration.MigrationInvoker.migrateToApplicationFirstInvoker(MigrationInvoker.java:245)
	at org.apache.dubbo.registry.client.migration.MigrationRuleHandler.refreshInvoker(MigrationRuleHandler.java:76)
	at org.apache.dubbo.registry.client.migration.MigrationRuleHandler.doMigrate(MigrationRuleHandler.java:60)
	- locked <0x00000007189af330> (a org.apache.dubbo.registry.client.migration.MigrationRuleHandler)
	at org.apache.dubbo.registry.client.migration.MigrationRuleListener.onRefer(MigrationRuleListener.java:247)
	at org.apache.dubbo.registry.integration.RegistryProtocol.interceptInvoker(RegistryProtocol.java:534)
	at org.apache.dubbo.registry.integration.RegistryProtocol.doRefer(RegistryProtocol.java:504)
	at org.apache.dubbo.registry.integration.RegistryProtocol.refer(RegistryProtocol.java:486)
	at org.apache.dubbo.rpc.protocol.ProtocolListenerWrapper.refer(ProtocolListenerWrapper.java:74)
	at org.apache.dubbo.qos.protocol.QosProtocolWrapper.refer(QosProtocolWrapper.java:81)
	at org.apache.dubbo.rpc.cluster.filter.ProtocolFilterWrapper.refer(ProtocolFilterWrapper.java:71)
	at org.apache.dubbo.rpc.protocol.ProtocolSerializationWrapper.refer(ProtocolSerializationWrapper.java:52)
	at org.apache.dubbo.rpc.Protocol$Adaptive.refer(Protocol$Adaptive.java)
	at org.apache.dubbo.config.ReferenceConfig.createInvokerForRemote(ReferenceConfig.java:614)
	at org.apache.dubbo.config.ReferenceConfig.createProxy(ReferenceConfig.java:448)
	at org.apache.dubbo.config.ReferenceConfig.init(ReferenceConfig.java:300)
	- locked <0x00000005c2313808> (a org.apache.dubbo.config.ReferenceConfig)
	at org.apache.dubbo.config.ReferenceConfig.get(ReferenceConfig.java:232)
	- locked <0x00000005c2313808> (a org.apache.dubbo.config.ReferenceConfig)
	at org.apache.dubbo.config.utils.SimpleReferenceCache.get(SimpleReferenceCache.java:131)
	at org.apache.dubbo.config.deploy.DefaultModuleDeployer.lambda$referServices$6(DefaultModuleDeployer.java:396)
	at org.apache.dubbo.config.deploy.DefaultModuleDeployer$$Lambda$1160/1414372344.accept(Unknown Source)
	at java.util.concurrent.ConcurrentHashMap$ValuesView.forEach(ConcurrentHashMap.java:4707)
	at org.apache.dubbo.config.deploy.DefaultModuleDeployer.referServices(DefaultModuleDeployer.java:376)
	at org.apache.dubbo.config.deploy.DefaultModuleDeployer.startSync(DefaultModuleDeployer.java:167)
	- locked <0x00000005c100c958> (a org.apache.dubbo.config.deploy.DefaultModuleDeployer)
	at org.apache.dubbo.config.deploy.DefaultModuleDeployer.start(DefaultModuleDeployer.java:139)
	at org.apache.dubbo.config.ReferenceConfig.get(ReferenceConfig.java:228)
	at org.apache.dubbo.config.spring.ReferenceBean.getCallProxy(ReferenceBean.java:346)
	at org.apache.dubbo.config.spring.ReferenceBean.access$100(ReferenceBean.java:99)
	at org.apache.dubbo.config.spring.ReferenceBean$DubboReferenceLazyInitTargetSource.createObject(ReferenceBean.java:353)
	at org.springframework.aop.target.AbstractLazyCreationTargetSource.getTarget(AbstractLazyCreationTargetSource.java:88)
	- locked <0x00000005c2313660> (a org.apache.dubbo.config.spring.ReferenceBean$DubboReferenceLazyInitTargetSource)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:195)
	at com.sun.proxy.$Proxy193.allOrganization(Unknown Source)
	at com.***.OrganizationCache.lambda$new$0(OrganizationCache.java:44)
	at com.***.OrganizationCache$$Lambda$1157/1612491156.get(Unknown Source)
	at com.***.CacheByOne.refresh(CacheByOne.java:75)
	at com.***.CacheByOne$$Lambda$1158/1114712230.apply(Unknown Source)
	at com.***.AbstractCache$1.run(AbstractCache.java:61)
	at java.util.TimerThread.mainLoop(Timer.java:555)
	at java.util.TimerThread.run(Timer.java:505)
"main":
	at org.apache.dubbo.config.deploy.DefaultModuleDeployer.startSync(DefaultModuleDeployer.java:143)
	- waiting to lock <0x00000005c100c958> (a org.apache.dubbo.config.deploy.DefaultModuleDeployer)
	at org.apache.dubbo.config.deploy.DefaultModuleDeployer.start(DefaultModuleDeployer.java:139)
	at org.apache.dubbo.config.ReferenceConfig.get(ReferenceConfig.java:228)
	at com.***.ElementApiAutoConfiguration.elementApiDubboReference(ElementApiAutoConfiguration.java:25)
	at com.***.ElementApiAutoConfiguration$$EnhancerBySpringCGLIB$$eed7a286.CGLIB$elementApiDubboReference$1(<generated>)
	at com.***.ElementApiAutoConfiguration$$EnhancerBySpringCGLIB$$eed7a286$$FastClassBySpringCGLIB$$b1a4f79b.invoke(<generated>)
	at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)
	at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331)
	at com.***.ElementApiAutoConfiguration$$EnhancerBySpringCGLIB$$eed7a286.elementApiDubboReference(<generated>)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653)
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:638)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1352)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1195)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
	at org.springframework.beans.factory.support.AbstractBeanFactory$$Lambda$240/1599674462.getObject(Unknown Source)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
	- locked <0x00000005c0742138> (a java.util.concurrent.ConcurrentHashMap)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:953)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583)
	- locked <0x00000005c0741e30> (a java.lang.Object)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:144)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:771)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:763)
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:438)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:339)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1329)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1318)
	at com.***.Application.main(Application.java:22)

Found 1 deadlock.

Metadata

Metadata

Assignees

No one assigned

    Labels

    type/bugBugs to being fixed

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions