[ 
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)

Reply via email to