更新操作[REINDEX]无法针对状态为[INSTALLED]的索引调用。

7

我正在关注这个博客: https://developer.ibm.com/dwblog/2018/janusgraph-composite-mixed-indexes-traversals/

代码

gremlin> graph.tx().rollback()
==>null
gremlin> mgmt = graph.openManagement()
==>org.janusgraph.graphdb.database.management.ManagementSystem@19472803
gremlin> code = mgmt.getPropertyKey('code')
==>code
gremlin> mgmt.buildIndex('byCodeComposite', Vertex.class).addKey(code).buildCompositeIndex()
==>byCodeComposite
gremlin> mgmt.commit()
==>null
gremlin> mgmt.awaitGraphIndexStatus(graph, 'byCodeComposite').call()
==>GraphIndexStatusReport[success=False, indexName='byCodeComposite', targetStatus=[REGISTERED], notConverged={}, converged={code=REGISTERED}, elapsed=PT0.012S]
错误: 但是我得到了这个: ==>GraphIndexStatusReport[success=false, indexName='byCodeComposite', targetStatus=[REGISTERED], notConverged={code=INSTALLED}, converged={}, elapsed=PT1M0.413S] 版本: Cassandra:3.11.3 Elasticsearch:6.5.4 JanusGraph:0.3.1-hadoop2
我正在尝试解决这个问题,但对我来说不起作用。

你解决了这个问题吗?我也遇到了同样的问题。 - Zach
1个回答

9

很抱歉您在阅读博客时遇到了问题。

我注意到一个可能不会导致此错误但可能会导致其他问题的事情是,您使用的Cassandra和ES版本不在0.3.1兼容性矩阵中。

除此之外,以下是我去年撰写的索引故障排除提示,但从未发表过。希望它能解决您的问题。也许我会在不久的将来发布其余的文章。

索引故障排除:

创建索引时,如果有任何过期的管理会话或打开的事务,则索引可能会被困在已安装状态中。如果您不熟悉JanusGraph索引的生命周期,则有一个JanusGraph维基页面对索引状态和生命周期进行了图解说明。

gremlin> graph.getOpenTransactions()
==>standardjanusgraphtx[0x14ba9376]
==>standardjanusgraphtx[0x477aaf55]

要回滚所有事务,您可以运行以下命令,直到它们全部回滚,或者您可以编写一个循环来正确运行它。我个人更喜欢按几次向上箭头和回车键,而不是额外输入。
graph.getOpenTransactions().getAt(0).rollback()

要查看是否存在任何陈旧的管理实例,您可以运行getOpenInstances()方法。这也在JanusGraph文档的失败和恢复部分中有记录。如果您看到多个管理实例处于打开状态,可以使用如下所示的forceCloseInstance方法。
gremlin> mgmt = graph.openManagement()
gremlin> mgmt.getOpenInstances()
==>0934f2eb69223-Chriss-MacBook-Pro-2-local2
==>0729845962091-remoteMachine1
gremlin> mgmt.forceCloseInstance('0729845962091-remoteMachine1') 
gremlin> mgmt.commit()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接