In Atlas when a transaction is committed, the entries are committed to HBase (primary storage) and Solr (indexing storage). A transaction is rolled-back if the primary storage commit fails, on the other hand when the secondary commit fails (solr), the transaction is not-rolled back and logged as warning and it is recommended to use reindex to repair the missing index documents. This behavior is due to the fact that the primary storage is the source of truth and indexes can be rebuild.
In Janusgraph, there is a property for Solr to make solr commits async. This is set to true in Atlas making every commit to wait until the solr commit is successful. This will have a negative impact on performance and is recommended to be false by default.
|When mutating - wait for the index to reflect new mutations before returning. This can have a negative impact on performance.|
This Jira is about setting the default value for above property to FALSE and can be overridden if need arises.
The solution should use the StandardTransactionLogProcessor provided within JanusGraph to track failures to indexes (secondary storage in JanusGraph parlance) during commit. Using this would provide recovery mechanism in case of failures during transaction commit.