dlmu-lq commented on issue #9623:
URL: https://github.com/apache/dubbo/issues/9623#issuecomment-1161245647
>
重新启动生产者(dubbo-user-service)后,对应的web-demo循环多次client为HeaderExchangeClient后,执行最后一次client为org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient,对应的调用栈信息如下:
>
> ```
> destroyInternal:171, DubboInvoker (org.apache.dubbo.rpc.protocol.dubbo)
> destroy:141, DubboInvoker (org.apache.dubbo.rpc.protocol.dubbo)
> destroy:89, ListenerInvokerWrapper (org.apache.dubbo.rpc.listener)
> destroyAll:50, Invoker (org.apache.dubbo.rpc)
> destroyUnusedInvokers:512, RegistryDirectory
(org.apache.dubbo.registry.integration)
> refreshInvoker:260, RegistryDirectory
(org.apache.dubbo.registry.integration)
> refreshOverrideAndInvoker:184, RegistryDirectory
(org.apache.dubbo.registry.integration)
> notify:162, RegistryDirectory (org.apache.dubbo.registry.integration)
> notify:440, AbstractRegistry (org.apache.dubbo.registry.support)
> doNotify:371, FailbackRegistry (org.apache.dubbo.registry.support)
> notify:363, FailbackRegistry (org.apache.dubbo.registry.support)
> notifySubscriber:556, NacosRegistry (org.apache.dubbo.registry.nacos)
> access$100:88, NacosRegistry (org.apache.dubbo.registry.nacos)
> doNotify:656, NacosRegistry$RegistryChildListenerImpl$1
(org.apache.dubbo.registry.nacos)
> run:100, RegistryNotifier$NotificationTask (org.apache.dubbo.registry)
> call:514, Executors$RunnableAdapter (java.util.concurrent)
> run$$$capture:264, FutureTask (java.util.concurrent)
> run:-1, FutureTask (java.util.concurrent)
> - Async stack trace
> <init>:151, FutureTask (java.util.concurrent)
> <init>:215, ScheduledThreadPoolExecutor$ScheduledFutureTask
(java.util.concurrent)
> schedule:561, ScheduledThreadPoolExecutor (java.util.concurrent)
> submit:715, ScheduledThreadPoolExecutor (java.util.concurrent)
> submit:694, Executors$DelegatedExecutorService (java.util.concurrent)
> notify:77, RegistryNotifier (org.apache.dubbo.registry)
> onEvent:665, NacosRegistry$RegistryChildListenerImpl
(org.apache.dubbo.registry.nacos)
> onEvent:124, InstancesChangeNotifier
(com.alibaba.nacos.client.naming.event)
> onEvent:40, InstancesChangeNotifier (com.alibaba.nacos.client.naming.event)
> lambda$notifySubscriber$0:201, DefaultPublisher
(com.alibaba.nacos.common.notify)
> notifySubscriber:208, DefaultPublisher (com.alibaba.nacos.common.notify)
> receiveEvent:192, DefaultPublisher (com.alibaba.nacos.common.notify)
> openEventHandler:118, DefaultPublisher (com.alibaba.nacos.common.notify)
> run:95, DefaultPublisher (com.alibaba.nacos.common.notify)
> ```
遇到了相同的问题,这个堆栈用这个配置不行吧
`dubbo:
registry:
enable-empty-protection: false`
Invoker.destroyAll方法如果调用到DubboInvoker的destroyAll方法的话是可行的,但是这里中间加了一层ListenerInvokerWrapper,我们的应用堆栈更是增加了以下Invoker的实现:
<img width="675" alt="image"
src="https://user-images.githubusercontent.com/29395234/174714892-7cc65b50-ff51-4063-80b2-ca1b604e29a0.png">
最终导致DubboInvoker.destroyAll方法没有被调用,也就没有真正销毁client,导致不断重练报错。
大佬有什么解决方法吗,把每个Invoker的实现都单独实现一遍destroyAll方法吗? @zrlw
--
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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]