Closed it-linnan closed 3 years ago
我也遇到了相同的问题,我是使用的blot协议,当链路某个节点重启之后,在nacos中已经注册上来,但请求还是返回:当前服务[com.xx.xx.xx.xx:1.0]的地址[bolt://192.168.10.47:28802?accepts=100000&appName=xxx&weight=100&language=java&pid=32896&interface=com.xx.xx.xx.xx&timeout=3000&serialization=hessian2&protocol=bolt&delay=-1&dynamic=true&startTime=1600939020922&id=rpc-cfg-0&uniqueId=&rpcVer=50504,]不可用,或指定的地址不在可用的地址列表中
第一行执行完成了,第二行还没执行完成,会导致这个问题。 调用和注册中心通知是异步的,和CountDownLatch没什么关系。 后续打算调整执行顺序,先更新 connectionHolder,再更新 addressHolder。
is this issue coding?
Describe the bug
注册中心使用SOFARegistry 启动RPC服务端后,客户端使用泛化调用,首次调用SOFARPC接口,抛异常,第二次调用无异常。
异常如下:
Expected behavior
客户端首次调用SOFARPC接口,拉取到地址后,能够调用到服务端接口。
Actual behavior
客户端首次调用SOFARPC接口时,从注册中心拉取到地址后,未等到将ClientTransport放入aliveConnections中,就抛出了异常。第二次调用时,aliveConnections已经存在可用链接。
AllConnectConnectionHolder.java addNode方法中latch.await失效,未等到超时或ClientTransport放入aliveConnections中就抛出了异常。
Steps to reproduce
不是必现的问题,需要反复尝试才会出现。
Minimal yet complete reproducer code (or GitHub URL to code)
Environment
SOFARPC version: sofaboot-dependencies 3.1.5 rpc-sofa-boot-starter 6.0.3 sofa-rpc-all:5.5.5 registry-client-all:5.2.1 SOFARegistry:5.3.0
JVM version (e.g.
java -version
):1.8OS version (e.g.
uname -a
):Linux 4.4.226-1.el7.elrepo.x86_64Maven version:3.3.3
IDE version:Intellij IDEA 2020.1