地理索引与其他类型索引不能共存,storage会挂掉

:fire: 如果安装部署失败,不妨试试【免配置】【免安装】的 :cloud: 云服务,拷贝访问:http://c.nxw.so/cjUIw
:warning: NebulaGraph Cloud 的用户记得标签选用:NebulaGraph-Cloud,会有更高的回复优先级哟^^

充足的信息能提高解决问题的速度~

提问之前,记得带上报错信息在「本论坛」和「文档」搜索是否已有解决方案存在哟 ^^

为了更快地定位、解决问题,麻烦参考下面模版提问(不符合提问规范的问题,会被隐藏待补充相关信息之后再发布

提问参考模版:

  • nebula 版本:3.8
  • 部署方式:单机
  • 安装方式:Docker
  • 是否上生产环境:Y
  • 硬件信息
    • 磁盘( 推荐使用 SSD)
    • CPU、内存信息
  • 问题的具体描述
  • 相关的 meta / storage / graph info 日志信息(尽量使用文本形式方便检索)

发现一个比较严重的问题。如果一个Tag同时创建geo类型的索引和一个普通索引,查询的时候storage会直接挂掉。复现:

创建节点

CREATE TAG `event` (`gps` geography(point) NULL, `background_id` int64 NULL) ttl_duration = 0, ttl_col = "";

创建两个索引,一个是geo,一个是普通索引

CREATE TAG INDEX `event_bg_idx` ON `event` ( `background_id`);
CREATE TAG INDEX `event_gps_idx` ON `event` ( `gps`);

数据插入一条

INSERT VERTEX event (gps) VALUES "1":(ST_GeogFromText("POINT(107.09271891276 34.356034884983)"));

按距离查询

LOOKUP ON event
WHERE ST_DWithin(event.gps, ST_GeogFromText("POINT(107.09271891271 54.356034884983)"), 10)
YIELD id(VERTEX) as node

报错,
Storage Error: RPC failure, probably timeou

我怀疑是lookup 的时候 stroage的压力过大导致。
我在自己的环境里,验证没出现这个问题。

只有一条数据,应该不是storage压力过大导致。我用演示里面的basketballplayer这库,查询确实没问题。
但当我重新新建一个库,就会出现这个问题。费解啊 :sob:

@MuYi-方扬 老师你新建一个空库再试试,应该就能复现

新建一个库是指新建一个 space,然后只有这一个点?

@MuYi-方扬 对的。只有一个点

我去,还真是

提个 issue 吧

@MuYi-方扬

When LOOKUP ON Tag by geo index the storaged service will crash · Issue #5919 · vesoft-inc/nebula (github.com)

Issue 提了,辛苦看一看

2 个赞

这个问题有结论吗 @MuYi-方扬

开发小哥在忙着搞另外一个 feature,还没整这个,应该就是个 bug。

确实是个bug, 可以关注下这个修复的pr: fix the bug that index scan rule chooses a wrong geo index by jievince · Pull Request #5922 · vesoft-inc/nebula · GitHub

2 个赞

点赞!

此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。