nebula-java客户端解析问题

nebula版本:2.0.1

   <dependency>
            <groupId>com.vesoft</groupId>
            <artifactId>client</artifactId>
            <version>2.0.0-rc1</version>
        </dependency>

sql语句有错误,导致返回了BAD_DATA,但是java客户端解析的时候如下图所示:


BAD_DATA最后被解析为2……,很有误导性,刚开始遇到的时候很懵,不知道这个2是哪里来的。感觉遇到BAD_DATA客户端还不如直接抛异常好一点

你这个不升级下吗?我们都 2.5.0 了

请问2.5.0的java客户端可以无缝适配nebula2.0.1吗?

你在问能不能向下兼容吗

对的

这两个版本没有数据结构变化,应该是兼容,我找研发确认下

确认过了,v2.5.0 的客户端不兼容 v2.0.1 的版本,因为这个版本中我们改了 error code

嗯嗯,我们改了ngql,绕开了这个问题,不过希望后面能够优化客户端对BAD_DATA的处理

1 个赞

那请问下v2.0.1的java客户端可以正常连接并使用v2.5.0的nebula的服务端呢?
我们有从v2.0.1升级到v2.0.5的意向

也得升级下,因为 v2.5.0 改过 error code(哦,我上面说过了)

我知道你说过了,我的意思是除了这一点的更改,其余呢?(我理解如果只是错误码的变更,应该不影响正常使用吧,解析的时候统一error_code不等于0的都是执行失败啊)

nebula 是不是不支持多线程写入? 目前用多线程写入数据 ,偶尔会报错:com.vesoft.nebula.client.graph.exception.IOErrorException: java.net.SocketException: Broken pipe (Write failed);
每个线程 也对session release了;
这个问题是偶发性的;
nebula version :2.0.1
java client :2.0.0
难道永远只能一个线程写入数据?

如果多线程共用一个session是不支持的,但是各用一个线程的话是可以的。

我们就是每个线程 从 pool中获取一个session,每次也打印了sessionid 是不同的 , 当前线程用完也release了,还是偶尔遇见了 java.net.SocketException: Broken pipe

Broken pipe出现的情况一般是writer要往一个socket里写东西的时候发现socket已经提前关闭了,有没有可能是你那边的网络不稳定导致的?单线程有遇到这个问题吗?

目前我是通过修改java client 为2.0.1后,这个问题暂时没有出现了

浙ICP备20010487号