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

Justine Olshan resolved KAFKA-21422.
------------------------------------
    Resolution: Fixed

> One failing entry in a WriteTxnMarkers response shouldn't block the rest
> ------------------------------------------------------------------------
>
>                 Key: KAFKA-21422
>                 URL: https://issues.apache.org/jira/browse/KAFKA-21422
>             Project: Kafka
>          Issue Type: Bug
>            Reporter: Dongnuo Lyu
>            Assignee: Dongnuo Lyu
>            Priority: Major
>
> In 
> [onComplete|https://github.com/apache/kafka/blob/6c3a5952a1a0a13d828a4d7ba6692a9b3da368e8/core/src/main/scala/kafka/coordinator/transaction/TransactionMarkerRequestCompletionHandler.scala#L94],
>  we have no per entry error handling, so the exception leaves the loop and 
> every later entry in the same response is skipped. Those transactions have 
> their markers written but never acknowledged, and stay in PrepareCommit until 
> the __transaction_state partition is reloaded.
>  
> The issue was found during a leadership move sending 6 partitions from broker 
> 2 and 1 partition from broker 1 to broker 0 while markers are in flight. The 
> old leaders reply NOT_LEADER_OR_FOLLOWER. Each response handler re-queues its 
> own failed partitions, so broker 0's queue gets two TxnMarkerEntry for the 
> same producer.
> Broker 0 merges results per producer id, so the response has one error map 
> covering all 7 partitions.
> The handler looks up errors by producer id and iterates the whole map per 
> entry, so the 7 partitions are processed twice. The first pass completes the 
> transaction. The second pass hits unexpected state.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to