[ 
https://issues.apache.org/jira/browse/IGNITE-26669?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18030653#comment-18030653
 ] 

Egor Kuts edited comment on IGNITE-26669 at 10/20/25 8:05 AM:
--------------------------------------------------------------

We can only get null tx meta from the coordinator in 2 cases:
 # Coordinator was restarted and lost its volatile state. I fixed this by 
ensuring we call the coordinator (resolveTxStateFromCoordinator) using its 
ephemeral node ID. If this happens, we abandon the transaction and resolve the 
state from the commit partition.
 # Coordinator has already removed the tx from its volatile state or never 
wrote it to its state. I fixed this by falling back to the commit partition.


was (Author: JIRAUSER311140):
We can only get null tx meta from the coordinator in 2 cases:
 # Coordinator was restarted and lost its volatile state. I fixed this by 
ensuring we call the coordinator (resolveTxStateFromCoordinator) using its 
ephemeral node ID. If this happens, we abandon the transaction and resolve the 
state from the commit partition.

 # Coordinator has already removed the tx from its volatile state or never 
wrote it to its state. I fixed this by falling back to the commit partition.

> NullPointerException in PartitionReplicaListener
> ------------------------------------------------
>
>                 Key: IGNITE-26669
>                 URL: https://issues.apache.org/jira/browse/IGNITE-26669
>             Project: Ignite
>          Issue Type: Bug
>            Reporter:  Kirill Sizov
>            Assignee: Egor Kuts
>            Priority: Major
>              Labels: MakeTeamcityGreenAgain, ignite-3
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> Got exception
> {noformat}
> Caused by: java.lang.NullPointerException  at 
> org.apache.ignite.internal.table.distributed.replicator.PartitionReplicaListener.lambda$resolveWriteIntentReadability$205(PartitionReplicaListener.java:3555)
>   at 
> java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:646)
>   at 
> java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
>   at 
> java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147)
>   at 
> org.apache.ignite.internal.table.distributed.replicator.TransactionStateResolver.lambda$resolveTxStateFromTxCoordinator$5(TransactionStateResolver.java:226)
>   ... 10 more{noformat}
> [https://ci.ignite.apache.org/buildConfiguration/ApacheIgnite3xGradle_Test_IntegrationTests_ModuleTable/9532953]
> {{TransactionStateResolver.resolveTxStateFromTxCoordinator}} has this code:
> {code:java}
> txMetaFuture.complete(asTransactionMeta(response.txStateMeta())); {code}
> and the {{asTransactionMeta}} method looks like:
> {code:java}
> private static @Nullable TransactionMeta asTransactionMeta(@Nullable 
> TransactionMetaMessage transactionMetaMessage) {
>     return transactionMetaMessage == null ? null : 
> transactionMetaMessage.asTransactionMeta();
> } {code}
> So there is a chance to get null state.



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

Reply via email to