-
-
Notifications
You must be signed in to change notification settings - Fork 86
Description
Hi guys!
I need some advice/tip/help how to "conquer" concurrent transactions in ArcadeDB.
The context:
I have an instance of OracleDB where data is primarily stored and an instance of ArcadeDB (remote, standalone server).
Communication to ArcadeDB is done via RemoteDatabase (REST calls).
When some changes are done to OracleDB all the required changes are also reflected (synced) to ArcadeDB.
ArcadeDB is only used for routing and stores all the required data.
It's really important to keep data between OracleDB and ArcadeDB in sync and to do that I synchronize transactions between OracleDB and ArcadeDB.
Meaning that when Oracle transaction is created, I open an ArcadeDB transaction, if needed (not all data are synced to ArcadeDB), and commit/rollback them simultaneously.
Oracle has many parallel transactions that are making changes.
The problem:
I'm facing an exception like this a lot:
Concurrent modification on page PageId(dbname/40696/156) in file 'device_0.40696.65536.v0.bucket' (current v.66 <> database v.67). Please retry the operation (threadId=128)
I've tried to increase the delay and retry number but then I'm facing a "deadlocks" on my side (OracleDB) because Oracle transaction is waiting when ArcadeDB transaction succeed and there a lot of them and Oracle transaction can't wait for long.
Also, I saw in the documentation that ConcurrentModificationException should be thrown when a record is modified, not a page as it says in the exception message above:

Would be glad for any tips or tricks from your side how to deal with this if possible.
Thanks in advance!