[
https://issues.apache.org/jira/browse/KAFKA-10186?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17169052#comment-17169052
]
John Thomas commented on KAFKA-10186:
-------------------------------------
[~ableegoldman] If we abort a transaction with any non-flushed data, we want to
throw a different exception, since we know its non-fatal ?
{color:#172b4d}If my understanding is correct, In
Sender#maybeSendAndPollTransactionalRequest :
transactionManaer.hasAbortableError() -> This is fatal, {color}
{color:#172b4d}transactionManager.isAborting() - > This is something we know
that its aborted, and is recoverable. --
{color}
{code:java}
if (transactionManager.hasAbortableError() || transactionManager.isAborting()) {
if (accumulator.hasIncomplete()) {
RuntimeException exception = transactionManager.lastError();
if (exception == null) {
exception = new KafkaException("Failing batch since transaction was
aborted");
}
accumulator.abortUndrainedBatches(exception);
}
}{code}
PS : #newbie !
> Aborting transaction with pending data should throw non-fatal exception
> -----------------------------------------------------------------------
>
> Key: KAFKA-10186
> URL: https://issues.apache.org/jira/browse/KAFKA-10186
> Project: Kafka
> Issue Type: Improvement
> Components: producer
> Reporter: Sophie Blee-Goldman
> Priority: Major
> Labels: needs-kip, newbie, newbie++
>
> Currently if you try to abort a transaction with any pending (non-flushed)
> data, the send exception is set to
> {code:java}
> KafkaException("Failing batch since transaction was aborted"){code}
> This exception type is generally considered fatal, but this is a valid state
> to be in -- the point of throwing the exception is to alert that the records
> will not be sent, not that you are in an unrecoverable error state.
> We should throw a different (possibly new) type of exception here to
> distinguish from fatal and recoverable errors.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)