Действие обновления [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]

Версии: Cassandra: 3.11.3 elasticsearch: 6.5.4 janusgraph: 0.3.1-hadoop2

Я пытаюсь решить это, но это не работает для меня.


person Arayan Singh    schedule 21.01.2019    source источник


Ответы (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()
person Chris Hupman    schedule 25.01.2019