3秒是吗
是的,但是这是我本地的配置哦,是默认值,实际的最好你自己再确认一下
这个问题还是没有解决,因为我现在是1.0版本,请问2.0版本有解决这个问题吗?我不止sleep了一个heartbeat_interval_secs的时间,我再让程序多sleep一段时间都仍然会出现这种问题
就是我show tags都出现了我所需要创建的tag,并且我用show tags进行了查询,查到了我创建的tag,然后我再用lookup语句进行查询,都还是会报错,还是要等“一段时间”才能查,
应该是show tag能查到了,但是索引还没有完全建立,之前说的sleep一段时间行不通,没有解决。
请问2.0版本这个问题是否解决了?
heartbeat_interval_secs设置的是多少?storage,meta,graph都有这个设置项。
show tag index 是直接扫的磁盘,lookup是读取的cache,如果新创建了一个索引,需要等一个heartbeat_interval_secs的时间才能同步到cache。
“show tags” 是验证tag是否存在,这里应该检查一下index。
这里有一些关于index的CI测试用例,请参考
STORAGE和GRAPH设置的heartbeat_interval_secs都是3,meta的没有看见。我的确是让程序sleep过一段heartbeat_interval_secs时间之后才进行lookup查询的。
另外请问下java代码有检查index是否创建好的代码吗
能贴一下 meta,graph,storage的log吗?执行失败那个时间段的就行。
你创建完索引再做插入,不需要等待,直接查询,查不出来,那是bug。
假如你是插入完数据,进行创建索引,那么需要周期查看rebuild的结果,你可以通过在代码里面尝试周期获取 index 的rebuild状态( SHOW TAG INDEX STATUS;),成功了,才能去读数据,失败直接返回,至于尝试的超时时间看你的数据量。
这中间隔了两秒钟,这样能否确认是索引没建好的问题呢?
从报错原因看,graphd已经拿到这个index信息,可能storage还没更新,所以报这个错了。你要在创建完index后做查询的话,等两个heartbeat周期后再做插入或者查询稳妥点。
请问下怎么看出来graphd拿到了index的信息呢?
另外请问这是1.0版本的bug吗?如果是的话2.0版本是否还有呢?
这不是bug,这是设计就是这样的,数据插入和查询的时候,用的index 信息是从缓存拿的,缓存是周期更新的,怎么看出graphd拿到,是通过看代码的。
你创建tag后,可以理解创建index,但是后面做数据插入或者查询的时候,等两个周期的heartbeat之后再做。就不会因为缓存还没加载index而失败。
明白了,可是index信息是从缓存拿的,那缓存加载好index之后,没有对应返回信息吗?
目前没有。但是我想可以有这样的需求,比如可以通过meta获取一个更新表,表里面是每个graphd和storage向meta更新元数据的情况的时间。