Concurrent execution by using CALL { ... } IN TRANSACTION
Some jQAssistant concepts make use of CALL { ... } IN TRANSACTIONS to deal with larger code structures. One of them ist 'java:VirtualInvokes` which resolves virtual invocations of Java methods. The concept including the query can be found here.
There seems to be a regression in 5.26.x that CALL IN TRANSACTIONS now executes in concurrent transactions as we get errors The transaction read outdated data and cannot be recovered due to concurrent data modification. Retry the transaction.. Using CALL IN 1 CONCURRENT TRANSACTIONS solves the issue.
According to the manual there should be no concurrent transactions without the keyword CONCURRENT.
Neo4j Version: 5.26.30 Community Edition Operating System: Ubuntu 26/Windows 10/11 Installation Method: Embedded Java API: Embedded Java
Steps to reproduce
Sadly difficult as we only see it in large customer code bases which we would need to expose then. Let us know if you need a reproducer, then we will try create a setup.
Expected behavior
CALL IN TRANSACTION should only be executed concurrently if CONCURRENT is specified
Actual behavior
CALL IN 1 CONCURRENT TRANSACTIONS is required to avoid the error The transaction read outdated data and cannot be recovered due to concurrent data modification. Retry the transaction.
Source: neo4j/neo4j