Denis Chudov created IGNITE-22033:
-------------------------------------

             Summary: Replace PlacementDriver#currentLease with 
#getPrimaryReplica in ReadWriteTxContext#waitReadyToFinish
                 Key: IGNITE-22033
                 URL: https://issues.apache.org/jira/browse/IGNITE-22033
             Project: Ignite
          Issue Type: Bug
            Reporter: Denis Chudov


#currentLease can return null in a case when there is no lease information on 
the current node yet, while the lease may already exist on another node. This 
can lead to 
PrimaryReplicaExpiredException.
Seems that we've already seen such exceptions on TC:
 
{code:java}
Caused by: org.apache.ignite.internal.tx.impl.PrimaryReplicaExpiredException: 
IGN-TX-13 TraceId:2766fa1f-a00e-4c53-b556-7d06fc116229 Primary replica has 
expired, transaction will be rolled back: [groupId = 59_part_11, expected 
enlistment consistency token = 112211838526816298, commit timestamp = null, 
current primary replica = null]     at 
app//org.apache.ignite.internal.tx.impl.TransactionInflights$ReadWriteTxContext.waitReadyToFinish(TransactionInflights.java:271)
     at 
app//org.apache.ignite.internal.tx.impl.TransactionInflights$ReadWriteTxContext.performFinish(TransactionInflights.java:229)
     at 
app//org.apache.ignite.internal.tx.impl.TxManagerImpl.finish(TxManagerImpl.java:501)
     at 
app//org.apache.ignite.internal.tx.impl.ReadWriteTransactionImpl.finishInternal(ReadWriteTransactionImpl.java:161)
     at 
app//org.apache.ignite.internal.tx.impl.ReadWriteTransactionImpl.finish(ReadWriteTransactionImpl.java:140)
     at 
app//org.apache.ignite.internal.tx.impl.IgniteAbstractTransactionImpl.commitAsync(IgniteAbstractTransactionImpl.java:98)
     at 
app//org.apache.ignite.internal.sql.engine.tx.QueryTransactionWrapperImpl.commitImplicit(QueryTransactionWrapperImpl.java:46)
     at 
app//org.apache.ignite.internal.sql.engine.AsyncSqlCursorImpl.lambda$closeAsync$3(AsyncSqlCursorImpl.java:132)
     at 
[email protected]/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1106)
     at 
[email protected]/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2235)
     at 
app//org.apache.ignite.internal.sql.engine.AsyncSqlCursorImpl.closeAsync(AsyncSqlCursorImpl.java:132)
     at 
app//org.apache.ignite.internal.sql.engine.AsyncSqlCursorImpl.lambda$requestNextAsync$2(AsyncSqlCursorImpl.java:101)
     at 
[email protected]/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:930)
     at 
[email protected]/java.util.concurrent.CompletableFuture.uniHandleStage(CompletableFuture.java:946)
     at 
[email protected]/java.util.concurrent.CompletableFuture.handle(CompletableFuture.java:2266)
     at 
app//org.apache.ignite.internal.sql.engine.AsyncSqlCursorImpl.requestNextAsync(AsyncSqlCursorImpl.java:94)
     at 
app//org.apache.ignite.internal.sql.api.IgniteSqlImpl.lambda$executeAsyncInternal$4(IgniteSqlImpl.java:360)
     at 
[email protected]/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1072)
     at 
[email protected]/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
     at 
[email protected]/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2073)
     at 
app//org.apache.ignite.internal.sql.engine.SqlQueryProcessor$PrefetchCallback.onPrefetchComplete(SqlQueryProcessor.java:1050)
     at 
app//org.apache.ignite.internal.sql.engine.prepare.KeyValueModifyPlan.lambda$execute$3(KeyValueModifyPlan.java:141)
     at 
[email protected]/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:859)
     at 
[email protected]/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:837)
     at 
[email protected]/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478)
     at 
app//org.apache.ignite.internal.sql.engine.exec.ExecutionContext.lambda$execute$0(ExecutionContext.java:325)
     at 
app//org.apache.ignite.internal.sql.engine.exec.QueryTaskExecutorImpl.lambda$execute$0(QueryTaskExecutorImpl.java:83){code}
 
 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to