[
https://issues.apache.org/jira/browse/KAFKA-10504?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17204800#comment-17204800
]
HaiyuanZhao commented on KAFKA-10504:
-------------------------------------
>From my understanding yes.
```
{{ }}{{* @throws TransactionTimedOutException if the producer has encountered a
previously aborted transaction on coordinator side.}}
{{ }}{{* Application should catch it and retry starting another
transaction in this case.}}
```
As quoted above, when the producer {{encountered an }}{{aborted transaction on
coordinator side}}{{. The Application should retry another transaction.}}
However the client side transaction state can't transit from READY to
INITIALIZING directly by calling initProducerId. So if client received a
TRANSACTIONT_TIME_OUT error, it has to transit to ABORTING_TRANSACTION first by
calling abort.
The problem is that the client will also receive TRANSACTIONT_TIME_OUT error by
calling abort which enters an endless loop.
My solution refers to the idea of 8805. If the last error is an
TRANSACTIONT_TIME_OUT error, Calling abort will skip directly to InitProduceId.
> It will not work to skip to InitProducerId as lastError is always null
> ----------------------------------------------------------------------
>
> Key: KAFKA-10504
> URL: https://issues.apache.org/jira/browse/KAFKA-10504
> Project: Kafka
> Issue Type: Improvement
> Components: clients
> Reporter: HaiyuanZhao
> Assignee: HaiyuanZhao
> Priority: Major
> Original Estimate: 12h
> Remaining Estimate: 12h
>
> Kafka-8805 introduced an optimization for txn abort process: If the last
> error is an INVALID_PRODUCER_ID_MAPPING error, skip directly to InitProduceId.
> However this optimization will not work as the var lastError is always null.
> Because the txn state will transit to ABORTING_TRANSACTION from
> ABORTABLE_ERROR when beginAbort is called, and the lastError will updated to
> null.
> So then EndTxn is always called before InitProduceId.
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)