Details
-
Bug
-
Status: Resolved
-
Blocker
-
Resolution: Fixed
-
None
-
None
Description
org.apache.ignite.lang.IgniteException: IGN-CMN-65535 TraceId:911f0c07-4aa0-4f04-8b0b-e74e49b91d67 Error at: (test_delete_subquery.test:15). Statement: Statement [queries=[DELETE FROM integers i1 WHERE i>(SELECT MAX(i) FROM integers WHERE i1.i<>i)], expected=OK] Caused by: org.apache.ignite.lang.IgniteException: IGN-CMN-65535 TraceId:d3ee7af7-6d38-4ca4-bad5-86113048e6e9 IGN-CMN-65535 TraceId:d3ee7af7-6d38-4ca4-bad5-86113048e6e9 Index 50 out of bounds for length 49 Caused by: org.apache.ignite.lang.IgniteException: IGN-CMN-65535 TraceId:d3ee7af7-6d38-4ca4-bad5-86113048e6e9 Index 50 out of bounds for length 49 Caused by: java.lang.ArrayIndexOutOfBoundsException: Index 50 out of bounds for length 49
The reason for given issue is non-threadsafe org.apache.ignite.internal.tx.impl.TransactionImpl#enlistedResults
So that
private volatile List<CompletableFuture<?>> enlistedResults = new ArrayList<>();
was updated with
private final List<CompletableFuture<?>> enlistedResults = new CopyOnWriteArrayList<>();