环境信息
Dubbo version: 3.0.X 3.1.X Operating System version: xxx Java version: 1.8
步骤重现
1、参考另一篇issue 把check=false和dynamic=true设置了 还是不行
2、启动AB两个之后 关闭B 重启A会去检查B 导致报错
3、xxx
org.apache.dubbo.remoting.RemotingException: client(url: dubbo://192.168.31.100:20881/com.ruoyi.system.api.RemoteUserService?anyhost=true&application=ruoyi-auth&background=false&cache=false&check=false&codec=dubbo&deprecated=false&dubbo=2.0.2&dubbo.endpoints=[{"port":20881,"protocol":"dubbo"}]&dubbo.metadata.revision=7aa6a74b2033555ff9f68bcaa0559883&dubbo.metadata.storage-type=remote&dynamic=true&generic=false&heartbeat=60000&interface=com.ruoyi.system.api.RemoteUserService&ispuserver=true&logger=slf4j&metadata-type=remote&methods=getUserInfoByPhonenumber,registerUserInfo,getUserInfoByOpenid,getUserInfo&pid=20324&qos.enable=false®ister-mode=instance®ister.ip=192.168.31.100&release=3.1.2&service-name-mapping=true&side=consumer&sticky=false&timeout=3000×tamp=1667960478267&unloadClusterRelated=false&validation=false) failed to connect to server /192.168.31.100:20881, error message is:Connection refused: no further information: /192.168.31.100:20881
看了一下源码 如果等于check等于false直接就会报警告
设置了不检查 还疯狂连接报错 这设置意义何在呢
首先 创建NettyClient连接报error 然后因为设置了 check=false 再报一条warn 哭笑不得
通过修改 AbstractClient 源码 check=false 直接停止后续连接操作 所有报错都解决了 功能也都正常
原提问者GitHub用户JavaLionLi
这个报错是注册中心推送地址后地址不可达的报错(有可用地址,但是地址连接失败)。
这里的 check 的作用是避免注册中心直接剔除这个地址(如果注册中心链路上有报错会直接剔除),日志中的报错在生产定位原因的时候是必要的。即使是没有通过地址剔除这种严格的处理也不应该任何日志不留存,否则在调用出现不通或者报错的时候会给分析带来难度(是注册中心问题还是网络问题还是使用方式问题等等)。
从规范上来说,注册中心是不应该推送不可达地址的,根本应该解决的问题是应该保证下游服务都启动完毕。
原回答者GitHub用户AlbumenJ
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。