-
-
Notifications
You must be signed in to change notification settings - Fork 94
Closed
Milestone
Description
ArcadeDB Version:
23.9.1
OS and JDK Version:
MacOS
In the following circumstance, edges inserted and committed could be not retrieved:
- thread A is keeping a copy of the immutable vertex X
- thread A is adding an edge Y to the vertex X
- the same thread A later does the same operation, but the original cached immutable copy is not updated with the latest one causing a rewriting of the new vertex
The issue is that when an immutable record is modified (.modify() method), it should be checked if the record was previously loaded in the current transaction. if not, it means it's a cached copy or is coming from another transaction.
Without keeping a copy of the page in the transaction, the latest page is loaded from the storage into the transaction. So at save/commit time, the record uses the latest version of the page, succeeding in the 2nd phase of the commit.
A reload() must be forced every time the record is modified and the page is not in transaction.
Reactions are currently unavailable