sofastack / sofa-bolt

SOFABolt is a lightweight, easy to use and high performance remoting framework based on Netty.
https://www.sofastack.tech/projects/sofa-bolt/
Apache License 2.0
2.44k stars 860 forks source link

Connection timeout #291

Open fengjiachun opened 2 years ago

fengjiachun commented 2 years ago

Describe the bug https://github.com/sofastack/sofa-bolt/blob/master/src/main/java/com/alipay/remoting/connection/AbstractConnectionFactory.java#L321

这个 option 应该是全局的,每次建连时设置会被覆盖,所以建连超时设置不一定有效

下面的 future 或许应该加上等待超时的参数,比如下面这个截图,入参 connectTimeout 为 100ms,但是建连时间仍然消耗了 1s

image

版本 1.6.4

Expected behavior

Actual behavior

Steps to reproduce

Minimal yet complete reproducer code (or GitHub URL to code)

Environment

chuailiwu commented 2 years ago

future 加上等待超时的参数 不能解决本质问题(并发的原因设置的时间可能被覆盖) 需要加一个同步锁可以根本解决这个问题 image

googlefan commented 1 year ago

请问作者,这个问题解决了么在1.6.5 和1.6.6 的版本中? 我 的项目中 在集成 jraft来实现分布式的一致性,之前引用了1.6.4版本的bolt, 启动时候就报错: ERROR 13109 --- [27.0.0.1:8261>0] c.a.s.j.rpc.impl.AbstractClientService : Fail to connect 127.0.0.1:8263, remoting exception: com.alipay.remoting.exception.RemotingException: Create connection failed. The address is 127.0.0.1:8263. 我不能确定是否是这个问题引起的,将bolt版本升级到了1.6.6最新版,仍然没有解决 集群的启动问题.希望可以得一些支持哈

googlefan commented 1 year ago

虽然但是,我还是通过设置 nodeOptions.setRpcConnectTimeoutMs(5000); 解决了

googlefan commented 1 year ago

这个问题好奇怪呀,我这边集群一直运行正常, 昨天我吧 datapath 目录下的log、raft_meta、snapshot 目录下的 文件都删掉 重起后 又 无法选主了,提示无法连接 . 这次设置超时也没解决. 还是没有真正搞明白这块的 起因呀. 大佬 帮忙回答下上面的问题哈,就是这个问题解决了么?

googlefan commented 1 year ago

这个问题好奇怪呀,我这边集群一直运行正常, 昨天我吧 datapath 目录下的log、raft_meta、snapshot 目录下的 文件都删掉 重起后 又 无法选主了,提示无法连接 . 这次设置超时也没解决. 还是没有真正搞明白这块的 起因呀. 大佬 帮忙回答下上面的问题哈,就是这个问题解决了么?

找到问题原因了, 在定义 group: 127.0.0.1:8261, 127.0.0.1:8262, 127.0.0.1:8263 逗号 后有空格导致的, 代码木有做trim 处理, 代码提示也 看没看出来, 很难看出来呀 :

NodeImpl      : Node <storage/127.0.0.1:8262> can't do preVote as it is not in conf <ConfigurationEntry [id=LogId [index=0, term=0], conf=127.0.0.1:8261, 127.0.0.1:8262, 127.0.0.1:8263, oldConf=]>.