DSE Graph:同时使用二级索引和搜索索引的遍历,为什么会挂起?

DSE Graph: traversals that use both secondary and search indexes, why do they hang?

似乎在同一遍历中同时使用辅助索引和搜索索引的 gremlin 遍历挂起。这是为什么?

我从 DSE Graph docs on indexing 的理解是,最适合低基数属性的索引是二级索引。我有一个带有 'type' 属性 的模型,因此可能的类型数量有限;所以当我需要一个索引时,我使用了二级索引。

但似乎无法在同一次遍历中同时使用二级索引和搜索索引,如下例所示:

gremlin> system.graph('example').create()
==>null
gremlin> :remote config alias g example.g
==>g=example.g
gremlin> schema.vertexLabel('item').create()
==>null
gremlin> schema.propertyKey('type').Text().single().create()
==>null
gremlin> schema.propertyKey('description').Text().single().create()
==>null
gremlin> schema.vertexLabel('item').properties('type').add()
==>null
gremlin> schema.vertexLabel('item').properties('description').add()
==>null
gremlin> schema.vertexLabel('item').index('byType').secondary().by('type').add()
==>null
gremlin> schema.vertexLabel('item').index('search').search().by('description').add()
==>null
gremlin> graph.addVertex(label, 'item', 'type', 'A', 'description', 'first item is orange')
==>v[{~label=item, community_id=96406144, member_id=0}]
gremlin> graph.addVertex(label, 'item', 'type', 'A', 'description', 'second item is blue')
==>v[{~label=item, community_id=2076720128, member_id=0}]
gremlin> graph.addVertex(label, 'item', 'type', 'B', 'description', 'third item is green')
==>v[{~label=item, community_id=51027072, member_id=0}]
gremlin> g.V().hasLabel('item').has('type', 'A')
==>v[{~label=item, community_id=2076720128, member_id=0}]
==>v[{~label=item, community_id=96406144, member_id=0}]
gremlin> g.V().hasLabel('item').has('description', Search.token('blue'))
==>v[{~label=item, community_id=2076720128, member_id=0}]
gremlin> g.V().hasLabel('item').has('type', 'A').has('description', Search.token('blue'))

在最后一次遍历时,服务器在 /var/log/cassandra/system.log 中记录以下语句:

WARN  [gremlin-server-worker-1] 2016-09-15 14:26:49,759  GremlinExecutor.java:267 - Timing out script - g.V().hasLabel('item').has('type', 'A').has('description', Search.token('blue')) - in thread [gremlin-server-worker-1]

并且控制台完全死机,甚至不响应 SIGTERM。

这已由 DSE v5.0.3 解决。