Apache Ignite Deadlock Error on Continuous Select and Update Operations
Hi team,
I am using Apache Ignite version 3.0.0 and have created a table with the following schema:
CREATE TABLE INSTANT_CDR ( MSISDN VARCHAR PRIMARY KEY, RECHARGE_AMOUNT DOUBLE, VOICE_AMOUNT DOUBLE, LAST_NAME VARCHAR, BALANCE DOUBLE );
I have a JDBC Java program that performs SELECT and UPDATE operations on the table. The select query is:
SELECT * FROM INSTANT_CDR WHERE MSISDN='123456789'
And the update query is:
UPDATE INSTANT_CDR SET RECHARGE_AMOUNT=RECHARGE_AMOUNT+1, VOICE_AMOUNT=VOICE_AMOUNT+1 WHERE MSISDN='123456789'
However, when I perform continuous inserts and updates on rows, I am encountering the following error on the Ignite side:
Caused by: org.apache.ignite.internal.tx.LockException: IGN-TX-4 TraceId:b5f06ecc-1378-4315-96d9-e25d9ff70e6f Failed to acquire a lock due to a possible deadlock [locker=0195176a-f0ce-000b-e5f1-efe300000001, holder=0195176a-f0ce-000b-e5f1-efe300000001] at org.apache.ignite.internal.tx.impl.HeapLockManager.lockException(HeapLockManager.java:424) at org.apache.ignite.internal.tx.impl.HeapLockManager$LockState.isWaiterReadyToNotify(HeapLockManager.java:931) at org.apache.ignite.internal.tx.impl.HeapLockManager$LockState.tryAcquire(HeapLockManager.java:851) at org.apache.ignite.internal.tx.impl.HeapLockManager.acquire(HeapLockManager.java:216) ... 20 more
How does Apache Ignite handle concurrent SELECT and UPDATE operations? I am concerned about potential deadlocks due to continuous row updates and queries. Could anyone provide suggestions or configurations to resolve this issue and improve concurrent transaction handling in Ignite?
Thank you in advance
Hi @joice1910 , You can try Batch processing if it still persists & you are using [IgniteJdbcThinDriver](https://ignite.apache.org/docs/latest/SQL/JDBC/jdbc-client-driver) - try to add ignite.transaction.default.timeout=5000 (or reduce it to safer levels). You can also add setAutoCommit(false) over Jdbc-connection config and after query execution use commit(); method - Thanks!