JanusGraph Index Management

Shubhram Mohanty <mohanty...@...>

As I am using Janus as the graph database for our product, I have across numerous occasions where index is out of sync with the graph contents.
This in turn results into inconsistencies within the product. In order to handle this I am using the various utilities provided by Janus. Now, in scenarios
where there is no other option than to rebuild index, the first step that I perform here is disableIndex . This works well for smaller schema, but what I 
observed recently is that when I perform the same on larger schema, the status of the index doesn't change from Installed to Disabled even after long wait.

As per IndexManagement link (https://docs.janusgraph.org/advanced-topics/index-admin/) , we can go for MapReduce option only for performing  following actions :
1. Reindex
2. RemoveIndex 

I am using the following code for disabling index as suggested in documentation :

m = graph.openManagement()
nameIndex = m.getGraphIndex('name')
m.updateIndex(nameIndex, SchemaAction.DISABLE_INDEX).get()

ManagementSystem.awaitGraphIndexStatus(graph, 'name').timeout(MAX_WAIT_TIME, ava.time.temporal.ChronoUnit.MINUTES).status(SchemaStatus.DISABLED).call() 

Even, I tried increasing the MAX_WAIT_TIME here, but the status doesn't change to DISABLED.

This works perfectly fine for smaller schema.

So, is there a way we can distribute this operation? I could not find much information about this in JanusGraph documentation.


Pavel Ershov <owner...@...>

Index management can stuck when another graph instances exists but invalid. Try to check mgmt.getOpenInstances() and close invalid if exists throught mgmt.forceCloseInstance(). Some of issues already exists
https ://github.com/JanusGraph/janusgraph/issues/963, https://github.com/JanusGraph/janusgraph/issues/963