- nebula 版本:3.6.0
- 部署方式:分布式
- 安装方式:源码编译
- 是否上生产环境:N
环境中部署有3台metad,storaged,graphd服务,使用nebula-cpp的scan接口加载数据时,我看源码应该是任意取了metad列表中的最后一个metad地址去连接
但我发现如果这个metad不是leader的话,就会出现连接失败的问题,导致获取图信息失败
是不是这块客户端代码存在一些问题?
环境中部署有3台metad,storaged,graphd服务,使用nebula-cpp的scan接口加载数据时,我看源码应该是任意取了metad列表中的最后一个metad地址去连接
但我发现如果这个metad不是leader的话,就会出现连接失败的问题,导致获取图信息失败
是不是这块客户端代码存在一些问题?
我理解,如果不是 leader 的话,会在返回结果把 leader 带回来,然后重新发起连接,你可以瞅瞅代码是不是有这个逻辑
目前没看到这个逻辑,测试时也验证了,把leader放到列表的最后就不会出现连接失败的问题。或者调用接口前先使用graphd把metad的leader查出来,metaAddrs_列表中只存放leader这一个元素,也能解决这个问题。
@MuYi-方扬 NebulaGraph仓库的代码有你说的这部分逻辑,但nebula-cpp没有将相关代码同步过来,导致有这个bug,我提了个issue,看能否帮忙处理一下,谢谢
issue链接:if the metad connection fails, the leader of ListSpacesResp should be used for retry · Issue #140 · vesoft-inc/nebula-cpp · GitHub