Re: How to circumvent transaction cache?


Boxuan Li
 

My thoughts are:

1) As you said, you wanted to be able to disable the transaction cache so that you can read from database again. I have provided a solution here: https://lists.lfaidata.foundation/g/janusgraph-users/message/5668 A PR is available here: https://github.com/JanusGraph/janusgraph/pull/2502
2) An alternative approach (apart from your external locking approach) is to use JanusGraph built-in locking mechanism, as we have discussed here: https://groups.google.com/g/janusgraph-users/c/WzsO78ndobA/m/e6GzFXI5CQAJ

Although the above approaches will likely work most of the time, they are not guaranteed to be robust due to the eventual consistency nature of HBase. If you need ACID you should switch to FoundationDB backend. To my best knowledge, there is no way that JanusGraph can provide ACID on top of an eventual consistent storage backend, because the graph instances can only “communicate" with each other via the underlying storage backend.

On Mar 8, 2021, at 9:40 PM, timon.schneider@... wrote:

Currently using HBase.

Consider the following:
User A decides to set isPublished of Vertex X from false to true, does not commit yet.
User B changes isPublished of Vertex X from false to true and commits immediately.
User A commits and will get an error because the property value is not the same anymore as at the start of the transaction.

Why wouldn't it be possible for JG to provide user A with select for update functionality that allows user A to select vertex X for update, do edits to other elements, commit and get the same message as in the example above if the property on vertex X is changed?

Join {janusgraph-users@lists.lfaidata.foundation to automatically receive all group messages.