You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@dubbo.apache.org by "LiosWong (GitHub)" <gi...@apache.org> on 2020/03/03 07:14:22 UTC

[GitHub] [dubbo] LiosWong commented on issue #5813: destroyAll method of DubboShutdownHook will be invoke twice when using spring framework

报错问题还没解决:
```
[03/03/20 11:50:06:453 CST] Thread-0  WARN config.DubboShutdownHook:  [DUBBO] There's no ApplicationConfig specified., dubbo version: , current host: 192.168.124.10
java.lang.IllegalStateException: There's no ApplicationConfig specified.
	at org.apache.dubbo.config.context.ConfigManager.lambda$getApplicationOrElseThrow$0(ConfigManager.java:88)
	at java.util.Optional.orElseThrow(Optional.java:290)
	at org.apache.dubbo.config.context.ConfigManager.getApplicationOrElseThrow(ConfigManager.java:88)
	at org.apache.dubbo.rpc.model.ApplicationModel.getApplicationConfig(ApplicationModel.java:100)
	at org.apache.dubbo.rpc.model.ApplicationModel.getName(ApplicationModel.java:104)
	at org.apache.dubbo.rpc.model.ApplicationModel.getApplication(ApplicationModel.java:112)
	at org.apache.dubbo.registry.integration.RegistryProtocol.destroy(RegistryProtocol.java:500)
	at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper.destroy(ProtocolFilterWrapper.java:166)
	at org.apache.dubbo.rpc.protocol.ProtocolListenerWrapper.destroy(ProtocolListenerWrapper.java:80)
	at org.apache.dubbo.config.DubboShutdownHook.destroyProtocols(DubboShutdownHook.java:138)
	at org.apache.dubbo.config.DubboShutdownHook.destroyAll(DubboShutdownHook.java:121)
	at org.apache.dubbo.config.bootstrap.DubboBootstrap.destroy(DubboBootstrap.java:1037)
	at org.apache.dubbo.config.bootstrap.DubboBootstrap.stop(DubboBootstrap.java:817)
	at org.apache.dubbo.config.spring.context.DubboBootstrapApplicationListener.onContextClosedEvent(DubboBootstrapApplicationListener.java:63)
	at org.apache.dubbo.config.spring.context.DubboBootstrapApplicationListener.onApplicationContextEvent(DubboBootstrapApplicationListener.java:54)
	at org.apache.dubbo.config.spring.context.OneTimeExecutionApplicationContextEventListener.onApplicationEvent(OneTimeExecutionApplicationContextEventListener.java:40)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:393)
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:347)
	at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:991)
	at org.springframework.context.support.AbstractApplicationContext$2.run(AbstractApplicationContext.java:929)
[03/03/20 11:50:06:453 CST] DubboShutdownHook  INFO listener.LoggingEventListener:  [DUBBO] Dubbo Service has been destroyed., dubbo version: , current host: 192.168.124.10
```
pr中确实能保证只被执行一次,但是销毁过程中,两个线程操作顺序不能保证,其中一个会把``org.apache.dubbo.config.context.ConfigManager#configsCache``数据删除,另一个线程在销毁``org.apache.dubbo.registry.integration.RegistryProtocol#destroy``会报以上的错

[ Full content available at: https://github.com/apache/dubbo/issues/5813 ]
This message was relayed via gitbox.apache.org for notifications@dubbo.apache.org