[jira] [Comment Edited] (IGNITE-21799) A transaction rollback fails with assertion error

2024-04-03 Thread Andrey Mashenkov (Jira)


[ 
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

2024-04-03 Thread Andrey Mashenkov (Jira)


[ 
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)