Действие обновления [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()
Другие вопросы по тегам