提问参考模版:
nebula 版本:v.2.6.1
部署方式:分布式
安装方式:RPM
是否为线上版本:Y / N
硬件信息
问题的具体描述
在 代码中 use space; show jobs
go语言,结果如下,只有title 没有value
2022/01/11 17:49:15 result: {"errors":[{"code":0}],"results":[{"spaceName":"***","data":[],"columns":["Job Id","Command","Status","Start Time","Stop Time"],"errors":{"code":0},"latencyInUs":2610}]}
如何获取show jobs 的结果
呃… 确定之前执行过 job 吗? 从您这个结果看上去就是, 执行成功, 但是之前并没有任何 job 的样子.
那您的 go 代码? 是自己写的, 然后调 nebula 的go thrift 客户端?
liuyu85cn:
go 代码? 是自己
就是go的客户端 执行的,session.executejson(“use space; show jobs”) 这种方式
use space 后面有space name吧?
Aiee
2022 年1 月 12 日 08:47
9
麻烦验证下, 用 session.execute(“use space; show jobs”)
的话结果里有数据吗?
Reid00
2022 年1 月 12 日 08:56
10
刚刚有check 了下,stats job 结束后可以拿到了。
我可能明白了,最新提交job stats 之后,可以拿到结果。
可能需要近期提交过一次? 有点奇怪,之前用python go client 都拿不到,但是console 可以拿到两天前的结果
Aiee
2022 年1 月 12 日 09:02
11
那是有点奇怪, console 的实现底层是依赖 nebula go的, 按理说结果不会有出入.
你在 console 登陆的用户和客户端登陆的用户是同一个吗?
Reid00
2022 年1 月 12 日 09:10
12
是同一个,都是GOD 用户,我之前测试,show hosts 可以直接拿到value, 唯独这个jobs 拿不到,不知道你那边测试能不能复现
Reid00
2022 年1 月 12 日 09:37
13
@Aiee 奇怪,我现在又拿不到value 了,重新提交了submit job stats 稍后看看能不能拿到value
Reid00
2022 年1 月 12 日 09:41
14
我知道了, 要 先执行 session.execut(“show jobs”) 才可以拿到结果,单独执行executejson 拿不到value,像是个bug
Aiee
2022 年1 月 12 日 10:41
16
我本地并没有浮现, demo 代码如下:
jsonStrResult, err := session.ExecuteJson("use test_data")
if err != nil {
t.Fatalf("fail to get the result in json format, %s", err.Error())
}
jsonStrResult, err = session.ExecuteJson("SUBMIT job stats")
if err != nil {
t.Fatalf("fail to get the result in json format, %s", err.Error())
}
time.Sleep(5 * time.Second)
jsonStrResult, err = session.ExecuteJson("show jobs")
if err != nil {
t.Fatalf("fail to get the result in json format, %s", err.Error())
}
可以顺利拿到 job 信息
Reid00
2022 年1 月 12 日 10:43
17
我是,console 提交的job
然后session.ExecuteJson(“use space; show jobs”) 这种方式
Aiee
2022 年1 月 12 日 10:52
18
我改成同一句也没有问题
你看看分开执行 use space 和 show jobs?
Aiee
2022 年1 月 12 日 10:57
20
我怀疑这个空的返回时 use space 的返回结果, 你可以看下 你的json格式里是不是有多行