java链接nebula无法执行查询

nebula 版本:3.1.0;nebula架构:三台服务部署集群。
服务器磁盘SSD 1T 内存256G cpu核数 64

java链接nebula执行查询后,无返回结果。报错显示
I20221110 12:12:04.270054 10369 ClientSession.cpp:52] Delete query, epId: 15
I20221110 12:12:04.272341 10390 AsyncSocket.cpp:2711] this=0x7f8bd3c3c000, AsyncSocket::handleRead() got 21 bytes
I20221110 12:12:04.272459 10369 GraphService.cpp:134] Sign out session 1668053532100546

同一语句在 nebula-consle以及nebula-studio执行都能正常返回结果,请帮忙看下

版本是3.2.1

更新都3.3.0也不行。回退到3.1.0就可以。升级方案就是解压tar包以后替换bin下面的二进制文件。其他未动。

对了 语句如下。好像只有带union的语句会有这个问题
match p=(m:Ncdxm)-[e:Rcdcp|Rdbr|Rkh|Rlxr|Rlxrdh]-(k)-[*0…1]-(a:Ngs) where id(m) == “Ncdxm_2321212121212” and m.Ncdxm.is_valid == “0” and e.is_valid == “0” and a.Ngs.org_code is not null and a.Ngs.org_code != “” WITH a as ngs return ngs union match (m:Nzrr)-[r]-(b:Ngs) where id(m) ==“Nzrr_121212121221212” and r.is_valid == “0” and b.Ngs.org_code is not null and b.Ngs.org_code != “” WITH b as ngs return ngs union match p1=(m:Nzrr)-[e:Rcph]-(:Ncph)-[r:Rcph]-(v:Ncl)-[r1:Rgk]-(c:Ngs) where id(m)==“Nzrr_121212122120” and r.is_valid == “0” and r1.is_valid == “0” and c.Ngs.org_code is not null and c.Ngs.org_code != “” and m.Ncl.is_valid == “0” WITH c as ngs return ngs

这里说的版本是客户端版本还是服务版本? 能正常使用的console是什么版本?

nebula-consle版本是nebula-console version Git: 0a2d655, Build Time: 2022-02-17T05:55:31+0000
nebula-studio 是3.4.1 这些都正常的。只是java程序链接的时候不行。 上面说的版本号是nebula graph的版本

java和go jdk的机制一样, 不应该有行为不一致的问题, 使用和服务端版本对应的客户端试一下

  1. nebula-consle以及nebula studio 这俩链接是没问题的
  2. java链接nebula用的官方的jar包,版本也是推荐的版本。目前观察到的是 带union的查询无法出结果。

java client 用的什么版本
java client 上的错误日志是什么,贴一下吧

版本3.3.0 没有报错,就是返回结果为空。用nebula-consle和nebula-studio可以查到数据的。
有问题的语句如下。

你的问题是 同样的语句用client3.0.0 能查到数据,client 3.3.0查不到数据?
你可以debug一下吗,断点打在Session.java文件的118 这一行


看下resp中的data 是否是空。

3.3.0是nebula-java的版本。链接nebula3.1.0可以查出来数据,就是3.2.1和3.3.0查不出来。应该不是客户端的问题。我们把语句的条件更改了一下测试。发现只要有and m.Ncdxm.is_valid == “0”这个条件就查不出来了,去掉这个条件就可以正常查询。

目前的情况是这个样子


debug的结果

看你debug的情况也是 这个请求的response中没有数据的。

你用console 能查出数据来 用的也是同样的语句吗,会不会语句不同,console中执行的语句中没有and m.Ncdxm.is_valid == “0” 这个条件啊, 按理说不应该会出现 相同语句在不同客户端中有不同的表现。

语句是直接复制出来的 :joy: 这个可以保证是一样的

:face_with_thermometer:这个还有什么办法可以查到原因吗。语句方面肯定是一样的,都是直接复制过来的。

我捋一下你的问题啊,你看下是这样吗?
同样一条语句
使用Java client 3.3.0 在NebulaGraph3.1.0上可以正常查到结果;
使用Java Client 3.3.0在NebulaGraph 3.2.1和3.3.0上查不到结果,但请求是返回SCUUESS的状态;
使用go client在NebulaGraph 3.2.1和3.3.0上可以正常查到结果。

studio和nebula-consle是go吧,这俩客户端可以正常查到结果的。上面两句没问题。

:joy:别忘了这个问题哈 。谢谢