Действие обновления [REINDEX] не может быть вызвано для индекса со статусом [INSTALLED]
Я слежу за этим блогом: 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]
ОШИБКА:
But i am getting this:
==>GraphIndexStatusReport[success=false, indexName='byCodeComposite', targetStatus=[REGISTERED], notConverged={code=INSTALLED}, converged={}, elapsed=PT1M0.413S]
Версии: Кассандра: 3.11.3, эластичный поиск: 6.5.4, январь: 0.3.1-hadoop2
Я пытаюсь решить это, но это не работает для меня.
1 ответ
Извините, у вас проблемы с подпиской на блог.
Одна вещь, которую я заметил, что, вероятно, не вызывает эту ошибку, но может вызвать другие проблемы, это то, что версии Cassandra и ES, которые вы используете, не включены в матрицу совместимости для 0.3.1.
Помимо этого, вот несколько советов по поиску и устранению неисправностей для индексов, которые я написал в прошлом году и которые никогда не удосужились опубликовать. Надеюсь, это поможет решить вашу проблему. Возможно, я смогу опубликовать оставшуюся часть статьи в ближайшем будущем.
Индексы устранения неполадок:
При создании индекса, если имеются какие-либо устаревшие сеансы управления или открытые транзакции, они могут застрять в состоянии INSTALLED. Если вы не знакомы с жизненным циклом индекса 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()