-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
【JRaft RheaKV】客户端使用rheaKVStore,最佳实践是随用随释放,还是进程启动后初始化一次?以及客户端在主切换时应如何处理? #1131
Comments
Rheakv client 推荐保持单例使用 |
好的,感谢解答。 |
@fengjiachun 请问rheaKVStore作为客户端,不具备识别主切换的能力吗?我在while true里面不停重试,依然一直报错,看样子需要手动调用某些api才能解决。 我应该如何处理呢? |
我再次尝试并简单看了一下逻辑,发现当主动停掉leader的时候,客户端未刷新元数据时,获取到的leader地址还是旧的。 这算是bug吗 看着逻辑像是只有请求通leader的一些异常情况才会触发刷新,如果leader直接挂了,请求不通的时候,没有重试机制? |
是不是我可以这样调用,主动去刷新缓存中的元数据: |
感谢指出,是有这么个问题,我来看看处理下 |
嗯,是可以先这么处理 |
好的,您现在维护版本包括哪些,此问题会修复哪些版本? 需要我提一个新的issue吗? |
最近会发一个版本(1.3.15)来解决,不用新提 issue,这个 issue 不要关闭就行 |
分布式锁续约,如果遇到这种情况,直接把续约取消了? 那业务应该如何用锁,来避免这种情况呢。遇到主切换,岂不是会导致锁可能失效 |
使用store.getPlacementDriverClient().getLeader(-1, true, 5000)刷新后,确实在用store put get都可以成功了,但后台一直刷异常,是有什么后台任务也需要刷新url吗?应该如何刷,您帮忙看看 2024-07-29 14:41:23,013 [Bolt-heal-connection-thread] WARN com.alipay.sofa.common.log - reconnect target: Origin url [127.0.0.1:8181], Unique key [127.0.0.1:8181]. failed. |
看日志,不是 jraft 的,是 bolt rpc 有个健康监测在打印日志 |
那应该怎么做呢,一直刷屏日志。还有上面问的那个锁的问题 |
在jraft-core的BoltRpcClient.java的init(RpcOptions opts) 方法中,使用了this.rpcClient.enableReconnectSwitch(); |
keep lease 本就无法保证一定成功,但凡涉及到网络,任何操作都无法保证成功,如果续租失败,那么 lease timeout 超过后锁就不再生效 |
bolt 的日志不是打在单独的文件里么 |
bolt 在创建连接的时候,如果网路有问题,有可能被 block 住最多一秒,所以需要它自动 reconnect,目前不支持修改 reconnect 的配置 |
那这个无用的连接也不会取消,因为我已经刷新元数据了,获取到新的leader,对于原leader的连接我应该取消,让他不在reconnect,这个有方法吗 |
感觉可以优化一下,对于一些连接问题,应该参照rheaKvStore,也有重试机制,尝试去新的leader进行续约。这个能优化吗。 |
TODO:
|
都一样的,只要完成网络异常重试就可以了 |
异常重试当前好像是出错了立马重试? |
不需要,跟你说的这个没关系,是刷新 leader 再重试,都不一定请求的同一个节点,间隔啥 |
好的,这个问题预计发版时间是啥时候呢,我可以参照pr先本地改一下先用着 |
应该这周会提一个 PR 来修复(最近较忙,我会尽快),发版预计再推迟一周 |
最新版本正准备发布,请关注 #1137 |
已发布 1.3.15,这个 issue 就关闭了 |
Your question
Describe your question clearly
1、使用jraft-rheakv的时候,客户端的这个rheaKVStore,是初始化一次,保持内存中唯一就行,还是随用随释放?那种是最佳实践。
Your scenes
Describe your use scenes (why need this feature)
Your advice
Describe the advice or solution you'd like
Environment
java -version
):uname -a
):The text was updated successfully, but these errors were encountered: