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 2021/08/26 07:10:31 UTC

[GitHub] [dubbo] abel533 opened a new issue #8604: 本地调试超时导致forbiden设置

abel533 opened a new issue #8604:
URL: https://github.com/apache/dubbo/issues/8604


   - [x] I have searched the [issues](https://github.com/apache/dubbo/issues) of this repository and believe that this is not a duplicate.
   - [x] I have checked the [FAQ](https://github.com/apache/dubbo/blob/master/FAQ.md) of this repository and believe that this is not a duplicate.
   
   ### Environment
   
   * Dubbo version: 2.7
   * Operating System version:  Windows 10
   * Java version: 11.0.5
   
   >用的 spring cloud alibaba, nacos 1.x
   
   ### Steps to reproduce this issue
   
   A->B 两个服务,如果A调用B服务超时(例如debug时),会把 RegistryDirectory 中的 forbidden 设置 true。
   
   B现在仍然在正常提供服务,但是因为A认为B挂了,就老死不相往来。。
   
   如果把B下线再上线,此时A刷新invoker会把 forbidden 设置 false,就又可以连接了。
   
   A是否应该有策略根据 forbidden = true 定期尝试服务是否可用。
   
   在开发环境中debug时,这个问题由于断点超时,非常常见,体验非常差。


-- 
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


[GitHub] [dubbo] abel533 commented on issue #8604: 本地调试超时导致forbiden设置

Posted by GitBox <gi...@apache.org>.
abel533 commented on issue #8604:
URL: https://github.com/apache/dubbo/issues/8604#issuecomment-908084754


   补充,发现问题在 nacos 30秒的定时任务
   
   ```
   "Nacos-Watch-Task-Scheduler-1" Id=95 TIMED_WAITING on io.netty.bootstrap.AbstractBootstrap$PendingRegistrationPromise@e6c8d28
       at java.base@11.0.5/java.lang.Object.wait(Native Method)
       -  waiting on io.netty.bootstrap.AbstractBootstrap$PendingRegistrationPromise@e6c8d28
       at java.base@11.0.5/java.lang.Object.wait(Object.java:462)
       at io.netty.util.concurrent.DefaultPromise.await0(DefaultPromise.java:679)
       at io.netty.util.concurrent.DefaultPromise.awaitUninterruptibly(DefaultPromise.java:304)
       at org.apache.dubbo.remoting.transport.netty4.NettyClient.doConnect(NettyClient.java:134)
       at org.apache.dubbo.remoting.transport.AbstractClient.connect(AbstractClient.java:191)
       at org.apache.dubbo.remoting.transport.AbstractClient.send(AbstractClient.java:171)
       at org.apache.dubbo.remoting.transport.AbstractPeer.send(AbstractPeer.java:53)
       at org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeChannel.request(HeaderExchangeChannel.java:135)
       at org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeClient.request(HeaderExchangeClient.java:95)
       at org.apache.dubbo.rpc.protocol.dubbo.LazyConnectExchangeClient.request(LazyConnectExchangeClient.java:129)
       at org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient.request(ReferenceCountExchangeClient.java:91)
       at org.apache.dubbo.rpc.protocol.dubbo.DubboInvoker.doInvoke(DubboInvoker.java:105)
       at org.apache.dubbo.rpc.protocol.AbstractInvoker.invoke(AbstractInvoker.java:163)
       at org.apache.dubbo.rpc.protocol.AsyncToSyncInvoker.invoke(AsyncToSyncInvoker.java:52)
       at org.apache.dubbo.rpc.listener.ListenerInvokerWrapper.invoke(ListenerInvokerWrapper.java:78)
       at org.apache.dubbo.rpc.filter.GenericImplFilter.invoke(GenericImplFilter.java:125)
       at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:83)
       at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:83)
       at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:83)
       at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:83)
       at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:83)
       at org.apache.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:89)
       at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:83)
       at org.apache.dubbo.rpc.protocol.dubbo.filter.FutureFilter.invoke(FutureFilter.java:51)
       at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:83)
       at org.apache.dubbo.rpc.filter.ConsumerContextFilter.invoke(ConsumerContextFilter.java:69)
       at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:83)
       at org.apache.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:56)
       at org.apache.dubbo.rpc.cluster.support.FailoverClusterInvoker.doInvoke(FailoverClusterInvoker.java:82)
       at org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker.invoke(AbstractClusterInvoker.java:260)
       at org.apache.dubbo.rpc.cluster.interceptor.ClusterInterceptor.intercept(ClusterInterceptor.java:47)
       at org.apache.dubbo.rpc.cluster.support.wrapper.AbstractCluster$InterceptorInvokerNode.invoke(AbstractCluster.java:92)
       at org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterInvoker.invoke(MockClusterInvoker.java:88)
       at org.apache.dubbo.rpc.proxy.InvokerInvocationHandler.invoke(InvokerInvocationHandler.java:74)
       at org.apache.dubbo.common.bytecode.proxy60.$invoke(proxy60.java)
       at com.alibaba.cloud.dubbo.service.DubboMetadataServiceInvocationHandler.invoke(DubboMetadataServiceInvocationHandler.java:48)
       at com.sun.proxy.$Proxy196.getExportedURLs(Unknown Source)
       at com.alibaba.cloud.dubbo.registry.DubboCloudRegistry.getExportedURLs(DubboCloudRegistry.java:424)
       at com.alibaba.cloud.dubbo.registry.DubboCloudRegistry.getTemplateExportedURLs(DubboCloudRegistry.java:324)
       at com.alibaba.cloud.dubbo.registry.DubboCloudRegistry.lambda$cloneExportedURLs$6(DubboCloudRegistry.java:288)
       at com.alibaba.cloud.dubbo.registry.DubboCloudRegistry$$Lambda$845/0x0000000100857840.accept(Unknown Source)
       at java.base@11.0.5/java.util.ArrayList.forEach(ArrayList.java:1540)
       at com.alibaba.cloud.dubbo.registry.DubboCloudRegistry.cloneExportedURLs(DubboCloudRegistry.java:284)
       at com.alibaba.cloud.dubbo.registry.DubboCloudRegistry.getExportedURLs(DubboCloudRegistry.java:265)
       at com.alibaba.cloud.dubbo.registry.DubboCloudRegistry.subscribeURLs(DubboCloudRegistry.java:240)
       at com.alibaba.cloud.dubbo.registry.DubboCloudRegistry.subscribeURLs(DubboCloudRegistry.java:227)
       at com.alibaba.cloud.dubbo.registry.DubboCloudRegistry.lambda$subscribeURLs$2(DubboCloudRegistry.java:206)
       at com.alibaba.cloud.dubbo.registry.DubboCloudRegistry$$Lambda$841/0x000000010082b840.accept(Unknown Source)
       at java.base@11.0.5/java.lang.Iterable.forEach(Iterable.java:75)
       at java.base@11.0.5/java.util.Collections$UnmodifiableCollection.forEach(Collections.java:1085)
       at com.alibaba.cloud.dubbo.registry.DubboCloudRegistry.subscribeURLs(DubboCloudRegistry.java:204)
       at com.alibaba.cloud.dubbo.registry.DubboCloudRegistry.lambda$subscribeURLs$0(DubboCloudRegistry.java:194)
       at com.alibaba.cloud.dubbo.registry.DubboCloudRegistry$$Lambda$895/0x0000000100934440.onApplicationEvent(Unknown Source)
       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:404)
       at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:361)
       at com.alibaba.cloud.dubbo.autoconfigure.DubboServiceDiscoveryAutoConfiguration.dispatchServiceInstancesChangedEvent(DubboServiceDiscoveryAutoConfiguration.java:175)
       at com.alibaba.cloud.dubbo.autoconfigure.DubboServiceDiscoveryAutoConfiguration.lambda$null$0(DubboServiceDiscoveryAutoConfiguration.java:245)
       at com.alibaba.cloud.dubbo.autoconfigure.DubboServiceDiscoveryAutoConfiguration$$Lambda$1309/0x0000000100a3fc40.accept(Unknown Source)
       at java.base@11.0.5/java.util.Iterator.forEachRemaining(Iterator.java:133)
       at java.base@11.0.5/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
       at java.base@11.0.5/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658)
       at com.alibaba.cloud.dubbo.autoconfigure.DubboServiceDiscoveryAutoConfiguration.lambda$onHeartbeatEvent$1(DubboServiceDiscoveryAutoConfiguration.java:243)
       at com.alibaba.cloud.dubbo.autoconfigure.DubboServiceDiscoveryAutoConfiguration$$Lambda$1308/0x0000000100a3f840.accept(Unknown Source)
       at org.springframework.beans.factory.ObjectProvider.ifAvailable(ObjectProvider.java:93)
       at com.alibaba.cloud.dubbo.autoconfigure.DubboServiceDiscoveryAutoConfiguration.onHeartbeatEvent(DubboServiceDiscoveryAutoConfiguration.java:240)
       at jdk.internal.reflect.GeneratedMethodAccessor541.invoke(Unknown Source)
       at java.base@11.0.5/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.base@11.0.5/java.lang.reflect.Method.invoke(Method.java:566)
       at org.springframework.context.event.ApplicationListenerMethodAdapter.doInvoke(ApplicationListenerMethodAdapter.java:305)
       at org.springframework.context.event.ApplicationListenerMethodAdapter.processEvent(ApplicationListenerMethodAdapter.java:190)
       at org.springframework.context.event.ApplicationListenerMethodAdapter.onApplicationEvent(ApplicationListenerMethodAdapter.java:153)
       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:404)
       at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:361)
       at com.alibaba.cloud.nacos.discovery.NacosWatch.nacosServicesWatch(NacosWatch.java:190)
       at com.alibaba.cloud.nacos.discovery.NacosWatch$$Lambda$1149/0x0000000100b7f840.run(Unknown Source)
       at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
       at java.base@11.0.5/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
       at java.base@11.0.5/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
       at java.base@11.0.5/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
       at java.base@11.0.5/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
       at java.base@11.0.5/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
       at java.base@11.0.5/java.lang.Thread.run(Thread.java:834)
   
       Number of locked synchronizers = 2
       - java.util.concurrent.ThreadPoolExecutor$Worker@f9cd1e6
       - java.util.concurrent.locks.ReentrantLock$NonfairSync@231f2405
   
   ```


-- 
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


[GitHub] [dubbo] abel533 closed issue #8604: 本地调试超时导致forbiden设置

Posted by GitBox <gi...@apache.org>.
abel533 closed issue #8604:
URL: https://github.com/apache/dubbo/issues/8604


   


-- 
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


[GitHub] [dubbo] DevenWen commented on issue #8604: 本地调试超时导致forbiden设置

Posted by GitBox <gi...@apache.org>.
DevenWen commented on issue #8604:
URL: https://github.com/apache/dubbo/issues/8604#issuecomment-907087442


   这看起来是一个保护性机制,在生产环境中这样的实现应该没问题。A 在不清楚 B 是否可用的情况下,最好的策略还是 forbidden 。不过我也觉得这个功能可以配置化。


-- 
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


[GitHub] [dubbo] abel533 commented on issue #8604: 本地调试超时导致forbiden设置

Posted by GitBox <gi...@apache.org>.
abel533 commented on issue #8604:
URL: https://github.com/apache/dubbo/issues/8604#issuecomment-906849292


   补充:调用 spring-cloud-starter-dubbo 中的 `DubboMetadataService` 超时(或由于存在断点,其他启动的服务调用该接口超时)


-- 
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