show jobs 代码怎么拿到返回值

提问参考模版:

  • nebula 版本:v.2.6.1
  • 部署方式:分布式
  • 安装方式:RPM
  • 是否为线上版本:Y / N
  • 硬件信息
    • 磁盘( 推荐使用 SSD)
    • CPU、内存信息
  • 问题的具体描述
    在 代码中 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 的样子.

我在console 上可以看到结果

@liuyu85cn

我刚刚提交了stats job

但是代码里面还是看不到jobs 的结果

那您的 go 代码? 是自己写的, 然后调 nebula 的go thrift 客户端?

就是go的客户端 执行的,session.executejson(“use space; show jobs”) 这种方式

use space 后面有space name吧?

是的; 下面这种方式,和截图的空间是一样的

use Relation; show jobs

麻烦验证下, 用 session.execute(“use space; show jobs”) 的话结果里有数据吗?

刚刚有check 了下,stats job 结束后可以拿到了。
我可能明白了,最新提交job stats 之后,可以拿到结果。
可能需要近期提交过一次? 有点奇怪,之前用python go client 都拿不到,但是console 可以拿到两天前的结果

那是有点奇怪, console 的实现底层是依赖 nebula go的, 按理说结果不会有出入.
你在 console 登陆的用户和客户端登陆的用户是同一个吗?

是同一个,都是GOD 用户,我之前测试,show hosts 可以直接拿到value, 唯独这个jobs 拿不到,不知道你那边测试能不能复现

@Aiee 奇怪,我现在又拿不到value 了,重新提交了submit job stats 稍后看看能不能拿到value

我知道了, 要 先执行 session.execut(“show jobs”) 才可以拿到结果,单独执行executejson 拿不到value,像是个bug

我试试本地复现下

我本地并没有浮现, 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 信息

我是,console 提交的job
然后session.ExecuteJson(“use space; show jobs”) 这种方式

我改成同一句也没有问题
你看看分开执行 use space 和 show jobs?

确实,分开也是可以拿到的

我怀疑这个空的返回时 use space 的返回结果, 你可以看下 你的json格式里是不是有多行