vesoft-inc / nebula-java

Client API and data importer of Nebula Graph in Java
Apache License 2.0
171 stars 121 forks source link

Execute ddl statement diff from the studio #504

Closed BOFA1ex closed 1 year ago

BOFA1ex commented 1 year ago

Describe the bug (required)

通过nebula-java 提交ddl语句,执行结果与预期不符合. 预期结果: 比如创建tag 指定属性A,B,C 执行结果: 创建tag, 多出了很多未指定的属性名.

运行相关截图: image 这里创建了atestmertriccplt实体仅id,name属性 但是通过studio/console检查ddl的执行结果,发现创建的属性有很大的问题. image

但是如果通过studio/console 提交ddl语句,执行结果与预期相符. image image

Your Environments (required)

How To Reproduce(required)

nebula-java#3.0.0 版本提交创建tag语句, 与studio提交创建tag语句相比较即可.

create tag difftestmertriccplt (id FIXED_STRING(255) comment 'identify an entity',name FIXED_STRING(255) comment 'name an entity'); alter tag difftestmertriccplt comment = 'test';

Expected behavior

目前给出的信息来看, 需要nebula-java这边检查下是客户端的原因还是nebula的缺陷. 至少在studio的执行角度来看, nebula服务端没有问题.

Additional context

Nicole00 commented 1 year ago

你之前是不是有创建过同名的tag 又删除了?

你用java client 去执行下 查看tag的schema,是否也复现这个问题

BOFA1ex commented 1 year ago

我换了个绝对没有重复过的名称, 保证不存在之前创建过后删除的场景. 执行完create tag ... 语句后, 执行"desc tag ..." 语句依旧存在以上问题, 该问题的复现率很高, 也存在部分创建正确的案例.

补充说明: 同时也尝试了新增tag后删除再新增的情况, 如果第一次新增出现属性问题的tag, 经多次删除后新增, 依旧存在以上问题. 以及如果第一次新增没有出现属性问题的tag, 经多次删除后新增, 没有出现以上问题.

Nicole00 commented 1 year ago

好的,感谢补充信息。 我在本地多次操作没有复现出这个问题,也有可能是我们使用的版本不一致。 请问你用的 studio版本是多少?

Nicole00 commented 1 year ago

还有,”执行完create tag ... 语句后, 执行"desc tag ..." 语句依旧存在以上问题, 该问题的复现率很高, 也存在部分创建正确的案例.“ 这个都是在java client中操作的吗

BOFA1ex commented 1 year ago

A1: studio version: v3.2.0 A2: 是的, 如果通过studio/console去执行的话, 没有出现以上的情况. 是否有必要去检查下meta的日志, 我觉得直接检查ddl语句的执行日志更容易排查问题. 这一块的日志有关键字用于定位么?

Nicole00 commented 1 year ago

A1: studio version: v3.2.0 A2: 是的, 如果通过studio/console去执行的话, 没有出现以上的情况. 是否有必要去检查下meta的日志, 我觉得直接检查ddl语句的执行日志更容易排插问题. 这一块的日志有关键字用于定位么?

如果你是创建和查询tag都在client里面操作且都能复现,那和studio没关系的。 你有查看你创建tag的请求的响应结果吗,结果是成功的吗? 你可以在client里面把创tag的语句加上 IF NOT EXISTS: create tag IF NOT EXISTS xxx()

BOFA1ex commented 1 year ago

如果你是创建和查询tag都在client里面操作且都能复现,那和studio没关系的

至少目前线上能得到反馈是, studio/console 提交执行和 sdk 提交执行 响应结果不一致.

你有查看你创建tag的请求的响应结果吗,结果是成功的吗?

检查过了的, 通过远程debug线上环境, 看到ResultSet#isSucceeded 是执行成功的.

你可以在client里面把创tag的语句加上 IF NOT EXISTS: create tag IF NOT EXISTS xxx()

补充这个 fragment是必要的吗,对执行有特别的影响吗? 如果存在脏数据,提交(create tag ...) 执行,nebula服务端抛出异常会更合理.

Nicole00 commented 1 year ago

这个问题还是第一次遇到,确定连接的是同一个服务吧, 还有检查下你的线上环境中不存在其他版本的client的jar包。

我在本地没有复现的,需要和其他同学再看看还需要什么信息。

YetAlpha commented 1 year ago

还有什么办法能排查呢?是否能通过某些日志来排查呢?

Nicole00 commented 1 year ago

分别提供在java client和console中执行 show hosts graph 命令的结果,确认下连接的服务是否是同一套集群

QingZ11 commented 1 year ago

@YetAlpha @BOFA1ex 这个 issue 超过一个月没有更新内容了,这边先行关闭了。如果你有任何更新的内容,可以再打开这个 issue 哈。

谢谢你的反馈 😊