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

Ritika Reddy updated KAFKA-19003:
---------------------------------
    Description: 
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{}}}.

  was: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.


> Add force-terminate command to  kafka-transactions CLI
> ------------------------------------------------------
>
>                 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