使用go客户端,建立连接的时候,包读取失败

调用client.Connect时候,因为读包失败,导致了response是nil
err: Invalid data length
github.com/vesoft-inc/nebula-go/nebula/graph.(*AuthResponse).GetErrorCode(…)
/Users/yech/codehub/go/gopath/src/github.com/vesoft-inc/nebula-go/nebula/graph/ttypes.go:2184
github.com/vesoft-inc/nebula-go.(*GraphClient).Connect(0xc0000943c0, 0x8b68ca, 0x4, 0x8b9d25, 0x8, 0xc0000943c0, 0x0)
/Users/yech/codehub/go/gopath/src/github.com/vesoft-inc/nebula-go/client.go:69 +0x391

client和nebula的版本对应么

查了好久,发现是fbthrift的版本问题,用v2020.03.09.00tag是没问题的。之后的版本都会发生这个问题。希望可以修复。

应该不需要升级,是go client的错误处理有点问题,已经修复了,你可以用最新的go client试试。

1 个赞

哦,明白为啥你没出这个问题而我出了。我没用gomod,go get拿到的是最新的fbthrift。而在nebula-go的gomod里,定义了

module GitHub - vesoft-inc/nebula-go: Nebula client in Golang

require GitHub - facebook/fbthrift: Facebook's branch of Apache Thrift, including a new C++ server. v0.0.0-20190922225929-2f9839604e25

go 1.13

这里要求了fbthrift的版本。在2020年3月9号之前的版本都是没问题的,之后的版本有协议的问题,会导致解包失败。

所以3.9之后的thrift版本现在依旧有问题是吧?

是的,还是有问题。

另外这个客户端包,功能上感觉还是有点薄弱了,比如没有定时心跳检测长连接保活、连接池的使用、失败重连重试等等机制。如果想用于生产环境,还是不太放心,需要使用者自己做很多保障机制。

嗯,客户端的系列问题近期已经开始跟进了,后面会制定一个标准,然后各语言版本来支持,也欢迎给我们提pr和意见

1 个赞

这里由于我们服务端的fbthrift使用了一个比较老的版本(18年的版本),因此新的fbthrift会和老的不兼容.