[ 
https://issues.apache.org/jira/browse/KAFKA-10080?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jason Gustafson resolved KAFKA-10080.
-------------------------------------
    Fix Version/s: 2.6.0
       Resolution: Fixed

> IllegalStateException after duplicate CompleteCommit append to transaction log
> ------------------------------------------------------------------------------
>
>                 Key: KAFKA-10080
>                 URL: https://issues.apache.org/jira/browse/KAFKA-10080
>             Project: Kafka
>          Issue Type: Bug
>            Reporter: Jason Gustafson
>            Assignee: Jason Gustafson
>            Priority: Major
>             Fix For: 2.6.0
>
>
> We noticed this exception in the logs:
> {code}
> java.lang.IllegalStateException: TransactionalId foo completing transaction 
> state transition while it does not have a pending state                       
>                                                      
>         at 
> kafka.coordinator.transaction.TransactionMetadata.$anonfun$completeTransitionTo$1(TransactionMetadata.scala:357)
>         at 
> kafka.coordinator.transaction.TransactionMetadata.completeTransitionTo(TransactionMetadata.scala:353)
>         at 
> kafka.coordinator.transaction.TransactionStateManager.$anonfun$appendTransactionToLog$3(TransactionStateManager.scala:595)
>                                                                               
>                                          
>         at 
> scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
>         at 
> kafka.coordinator.transaction.TransactionMetadata.inLock(TransactionMetadata.scala:188)
>         at 
> kafka.coordinator.transaction.TransactionStateManager.$anonfun$appendTransactionToLog$15$adapted(TransactionStateManager.scala:587)
>                                                                               
>                                 
>         at kafka.server.DelayedProduce.onComplete(DelayedProduce.scala:126)
>         at 
> kafka.server.DelayedOperation.forceComplete(DelayedOperation.scala:70)
>         at kafka.server.DelayedProduce.tryComplete(DelayedProduce.scala:107)
>         at 
> kafka.server.DelayedOperation.maybeTryComplete(DelayedOperation.scala:121)
>         at 
> kafka.server.DelayedOperationPurgatory$Watchers.tryCompleteWatched(DelayedOperation.scala:378)
>         at 
> kafka.server.DelayedOperationPurgatory.checkAndComplete(DelayedOperation.scala:280)
>         at 
> kafka.cluster.DelayedOperations.checkAndCompleteAll(Partition.scala:122)
>         at 
> kafka.cluster.Partition.tryCompleteDelayedRequests(Partition.scala:1023)
>         at 
> kafka.cluster.Partition.updateFollowerFetchState(Partition.scala:740)
> {code}
> After inspection, we found that there were two CompleteCommit entries in the 
> transaction state log which explains the failed transition. Indeed the logic 
> for writing the CompleteCommit message does seem prone to race conditions.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to