[ https://issues.apache.org/jira/browse/IGNITE-20534?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Maksim Zhuravkov updated IGNITE-20534: -------------------------------------- Labels: ignite-3 (was: ) > Transactions. It is possible to call enlist on a rollbacked transaction and > cause resource leak. > ------------------------------------------------------------------------------------------------ > > Key: IGNITE-20534 > URL: https://issues.apache.org/jira/browse/IGNITE-20534 > Project: Ignite > Issue Type: Improvement > Affects Versions: 3.0.0-beta2 > Reporter: Maksim Zhuravkov > Priority: Major > Labels: ignite-3 > > It is possible to rollback a transaction, invoke a modification operation, > open another transaction and get 'Failed to acquire a lock due to a conflict' > when accessing that table. > Reproducer: > {code:java} > @Test > public void testLockIsNotReleasedAfterTxRollback() { > Ignite ignite = CLUSTER_NODES.get(0); > IgniteSql sql = ignite.sql(); > try (Session ses = ignite.sql().createSession()) { > ses.execute(null, "CREATE TABLE IF NOT EXISTS tst(id INTEGER > PRIMARY KEY, val INTEGER)").affectedRows(); > } > try (Session session = sql.createSession()) { > Transaction tx = ignite.transactions().begin(); > assertThrows(RuntimeException.class, () -> session.execute(tx, > "SELECT 1/0")); > tx.rollback(); > session.execute(tx, "INSERT INTO tst VALUES (1, 1)"); // if this > line is commented out, everything works fine. > } > try (Session session = sql.createSession()) { > Transaction tx = ignite.transactions().begin(new > TransactionOptions().readOnly(false)); > session.execute(tx, "INSERT INTO tst VALUES (1, 1)"); //IGN-TX-4 > TraceId:20441aa3-c3fb-4900-a78f-b2cb4585e314 Failed to acquire a lock due to > a conflict [txId=018af087-fb6b-0000-0000-0000e9bae05c, > conflictingWaiter=WaiterImpl [txId=018af087-f595-0000-0000-0000e9bae05c, > intendedLockMode=null, lockMode=X, ex=null, isDone=true]] > tx.commit(); > } > } > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)