You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by "Ritika Reddy (Jira)" <ji...@apache.org> on 2025/04/03 18:43:00 UTC

[jira] [Resolved] (KAFKA-19003) Add force-terminate feature to kafka-transactions CLI and Admin Client

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

Ritika Reddy resolved KAFKA-19003.
----------------------------------
    Resolution: Fixed

> Add force-terminate feature to  kafka-transactions CLI and Admin Client
> -----------------------------------------------------------------------
>
>                 Key: KAFKA-19003
>                 URL: https://issues.apache.org/jira/browse/KAFKA-19003
>             Project: Kafka
>          Issue Type: Sub-task
>            Reporter: Ritika Reddy
>            Assignee: Ritika Reddy
>            Priority: Major
>
> The {{kafka-transactions.sh}} tool is going to support a new command forceTerminateTransaction.  It has one required argument {{-transactionalId}} that would take the transactional id for the transaction to be terminated.
> The {{Admin}}  interface will support a new method:
> {{public TerminateTransactionResult forceTerminateTransaction(String transactionalId)}} 
> {{TerminateTransactionResult}} just contains {{KafkaFuture<void> result}} method.
> NOTE that there is an existing {{abortTransaction}}  method that is used to abort “hanging” transactions (artifact of some gaps in the transaction protocol implementation that will be addressed in [KIP-890|https://cwiki.apache.org/confluence/display/KAFKA/KIP-890%3A+Transactions+Server-Side+Defense], i.e. once part 1 of [KIP-890|https://cwiki.apache.org/confluence/display/KAFKA/KIP-890%3A+Transactions+Server-Side+Defense] is implemented we won’t have “hanging” transactions).  “Hanging” transactions are not known to the Kafka transaction coordinator, they are just dangling messages in data partitions that cannot be aborted via the normal transaction protocol.  So {{abortTransaction}} actually needs information about data partitions so that it could go and insert markers directly there.
> On the other hand, the {{forceTerminateTransaction}} method would operate on a well-formed, but long running transaction for a given transactional id.  Under the covers it would just use {{InitProducerId}} call with {{{}keepPreparedTxn=false{}}}.



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