Concurrency challenges and the solution
Are there any known concurrency challenges with Janusgraph gremlin queries and what's the solution. I am planning to use either cassndra or ScyllaDB as storage backend.
2 Replies
You may face concurrency challenges with either of them since neither of them supports ACID transactions. For example, you might see stale indexes, phantom vertices, and half edges.
You can leverage Cassandra / ScyllaDB atomicity by turning on logged transactions. In such case all your changes will be committed via a single transaction (single batch).
Consistency is by default QUORUM both for reads and writes, thus your reads / writes can be consistent unless you configure consistency differently.
Thus, you can achieve ACID behaviour with Cassandra / ScyllaDB.
That said, if you use external mixed index backend than you may face stale transactions (i.e. permanent inconsistency between your storage backend and your mixed index backend). To deal with permanent inconsistencies you can use the following tool: https://docs.janusgraph.org/master/advanced-topics/stale-index/
you can also have transaction log enabled with WAL and resolve failed transactions using your own system.