[jira] [Comment Edited] (IGNITE-21799) A transaction rollback fails with assertion error
[ https://issues.apache.org/jira/browse/IGNITE-21799?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17833447#comment-17833447 ] Andrey Mashenkov edited comment on IGNITE-21799 at 4/3/24 8:15 AM: --- 1. I've created a branch with a repro `ignite-3/ignite-21799` 3. {code:java} java.lang.Exception: Tracker at org.apache.ignite.internal.worker.ThreadAssertions.trackerException(ThreadAssertions.java:89) ~[main/:?] at org.apache.ignite.internal.worker.ThreadAssertions.assertThreadAllowsTo(ThreadAssertions.java:76) ~[main/:?] at org.apache.ignite.internal.worker.ThreadAssertions.assertThreadAllowsToRead(ThreadAssertions.java:62) ~[main/:?] at org.apache.ignite.internal.tx.storage.state.ThreadAssertingTxStateStorage.get(ThreadAssertingTxStateStorage.java:50) ~[main/:?] at org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.finishAndCleanup(PartitionReplicaListener.java:1596) ~[main/:?] at org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.processTxFinishAction(PartitionReplicaListener.java:1563) ~[main/:?] at org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.processOperationRequest(PartitionReplicaListener.java:700) ~[main/:?] at org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.processOperationRequestWithTxRwCounter(PartitionReplicaListener.java:3923) ~[main/:?] at org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.lambda$processRequest$5(PartitionReplicaListener.java:440) ~[main/:?] {code} If I disable THREAD_ASSERTIONS_ENABLED, then test passes. However, it just hides this misbehaviour. was (Author: amashenkov): 1. I've created a branch with a repro ignite-3/ignite-21799 3. {code:java} java.lang.Exception: Tracker at org.apache.ignite.internal.worker.ThreadAssertions.trackerException(ThreadAssertions.java:89) ~[main/:?] at org.apache.ignite.internal.worker.ThreadAssertions.assertThreadAllowsTo(ThreadAssertions.java:76) ~[main/:?] at org.apache.ignite.internal.worker.ThreadAssertions.assertThreadAllowsToRead(ThreadAssertions.java:62) ~[main/:?] at org.apache.ignite.internal.tx.storage.state.ThreadAssertingTxStateStorage.get(ThreadAssertingTxStateStorage.java:50) ~[main/:?] at org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.finishAndCleanup(PartitionReplicaListener.java:1596) ~[main/:?] at org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.processTxFinishAction(PartitionReplicaListener.java:1563) ~[main/:?] at org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.processOperationRequest(PartitionReplicaListener.java:700) ~[main/:?] at org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.processOperationRequestWithTxRwCounter(PartitionReplicaListener.java:3923) ~[main/:?] at org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.lambda$processRequest$5(PartitionReplicaListener.java:440) ~[main/:?] {code} If I disable THREAD_ASSERTIONS_ENABLED, then test passes. However, it just hides this misbehaviour. > A transaction rollback fails with assertion error > - > > Key: IGNITE-21799 > URL: https://issues.apache.org/jira/browse/IGNITE-21799 > Project: Ignite > Issue Type: Bug >Reporter: Andrey Mashenkov >Priority: Major > Labels: ignite-3 > Fix For: 3.0.0-beta2 > > > A transaction rollback fails with > {noformat} > java.lang.AssertionError: Thread does not have allowed operations > {noformat} > Here is a simple reproducer below. > You can use an`ItCommonsApiTest` to reproduce. > {code:java} > @Test > public void rollbackAsync() { > Ignite node = CLUSTER.aliveNode(); > sql("CREATE TABLE IF NOT EXISTS TEST(ID INT PRIMARY KEY, VAL0 INT)"); > KeyValueView view1 = > node.tables().table("TEST").keyValueView(); > AtomicReference> rollbackFut = new > AtomicReference<>(); > > Transaction tx = node.transactions().begin(); > view1.getAsync(tx, Tuple.create().set("id", 101)) > .handle((unused, err) -> { > rollbackFut.set(tx.rollbackAsync()); // unconditional > roll back > return null; > }).join(); > rollbackFut.get().join(); // <- FAILS > } > } > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Comment Edited] (IGNITE-21799) A transaction rollback fails with assertion error
[ https://issues.apache.org/jira/browse/IGNITE-21799?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17833447#comment-17833447 ] Andrey Mashenkov edited comment on IGNITE-21799 at 4/3/24 8:15 AM: --- 1. I've created a branch with a repro {{ignite-3/ignite-21799}} 3. {code:java} java.lang.Exception: Tracker at org.apache.ignite.internal.worker.ThreadAssertions.trackerException(ThreadAssertions.java:89) ~[main/:?] at org.apache.ignite.internal.worker.ThreadAssertions.assertThreadAllowsTo(ThreadAssertions.java:76) ~[main/:?] at org.apache.ignite.internal.worker.ThreadAssertions.assertThreadAllowsToRead(ThreadAssertions.java:62) ~[main/:?] at org.apache.ignite.internal.tx.storage.state.ThreadAssertingTxStateStorage.get(ThreadAssertingTxStateStorage.java:50) ~[main/:?] at org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.finishAndCleanup(PartitionReplicaListener.java:1596) ~[main/:?] at org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.processTxFinishAction(PartitionReplicaListener.java:1563) ~[main/:?] at org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.processOperationRequest(PartitionReplicaListener.java:700) ~[main/:?] at org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.processOperationRequestWithTxRwCounter(PartitionReplicaListener.java:3923) ~[main/:?] at org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.lambda$processRequest$5(PartitionReplicaListener.java:440) ~[main/:?] {code} If I disable THREAD_ASSERTIONS_ENABLED, then test passes. However, it just hides this misbehaviour. was (Author: amashenkov): 1. I've created a branch with a repro `ignite-3/ignite-21799` 3. {code:java} java.lang.Exception: Tracker at org.apache.ignite.internal.worker.ThreadAssertions.trackerException(ThreadAssertions.java:89) ~[main/:?] at org.apache.ignite.internal.worker.ThreadAssertions.assertThreadAllowsTo(ThreadAssertions.java:76) ~[main/:?] at org.apache.ignite.internal.worker.ThreadAssertions.assertThreadAllowsToRead(ThreadAssertions.java:62) ~[main/:?] at org.apache.ignite.internal.tx.storage.state.ThreadAssertingTxStateStorage.get(ThreadAssertingTxStateStorage.java:50) ~[main/:?] at org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.finishAndCleanup(PartitionReplicaListener.java:1596) ~[main/:?] at org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.processTxFinishAction(PartitionReplicaListener.java:1563) ~[main/:?] at org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.processOperationRequest(PartitionReplicaListener.java:700) ~[main/:?] at org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.processOperationRequestWithTxRwCounter(PartitionReplicaListener.java:3923) ~[main/:?] at org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.lambda$processRequest$5(PartitionReplicaListener.java:440) ~[main/:?] {code} If I disable THREAD_ASSERTIONS_ENABLED, then test passes. However, it just hides this misbehaviour. > A transaction rollback fails with assertion error > - > > Key: IGNITE-21799 > URL: https://issues.apache.org/jira/browse/IGNITE-21799 > Project: Ignite > Issue Type: Bug >Reporter: Andrey Mashenkov >Priority: Major > Labels: ignite-3 > Fix For: 3.0.0-beta2 > > > A transaction rollback fails with > {noformat} > java.lang.AssertionError: Thread does not have allowed operations > {noformat} > Here is a simple reproducer below. > You can use an`ItCommonsApiTest` to reproduce. > {code:java} > @Test > public void rollbackAsync() { > Ignite node = CLUSTER.aliveNode(); > sql("CREATE TABLE IF NOT EXISTS TEST(ID INT PRIMARY KEY, VAL0 INT)"); > KeyValueView view1 = > node.tables().table("TEST").keyValueView(); > AtomicReference> rollbackFut = new > AtomicReference<>(); > > Transaction tx = node.transactions().begin(); > view1.getAsync(tx, Tuple.create().set("id", 101)) > .handle((unused, err) -> { > rollbackFut.set(tx.rollbackAsync()); // unconditional > roll back > return null; > }).join(); > rollbackFut.get().join(); // <- FAILS > } > } > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)