Yep, you can go ahead and call for a vote on the KIP

On Thu, Sep 3, 2020 at 12:09 PM Gokul Srinivas <apa...@nym3r0s.cc> wrote:

> Sophie,
>
> That sounds fair. I've updated the KIP to state the same message for
> backward compatibility to existing (albeit hacky) solutions.
>
> As this is my first ever contribution - is the next step to initiate the
> voting on this KIP?
>
> -Gokul
>
> On 04-09-2020 00:34, Sophie Blee-Goldman wrote:
> > I think the current proposal looks good to me. One minor suggestion I
> have
> > is to consider keeping the same error message:
> >
> > Failing batch since transaction was aborted
> >
> >
> > When we were running into this issue in Streams and accidentally
> rethrowing
> > the KafkaException as fatal, we ended up checking the specific error
> message
> > of the KafkaException and swallowing the exception if it was equivalent
> to
> > the
> > above. Obviously this was pretty hacky (hence the motivation for this
> KIP)
> > and
> > luckily we found a way around this, but it makes me wonder if any
> > applications
> > out there might be doing the same. So maybe we should reuse the old error
> > message just in case?
> >
> > Besides that, this KIP LGTM
> >
> > On Thu, Sep 3, 2020 at 5:23 AM Gokul Srinivas <apa...@nym3r0s.cc> wrote:
> >
> >> All,
> >>
> >> Gentle reminder - any comments on the line of thinking I mentioned in
> >> the last email? I've updated the Exception to be named
> >> "TransactionAbortedException" on the KIP confluence page.
> >>
> >> -Gokul
> >>
> >> On 01-09-2020 18:34, Gokul Srinivas wrote:
> >>> Matthias, Sophie, Jason,
> >>>
> >>> Took another pass at understanding the internals and it seems to me
> >>> like we should be extending the `ApiException` rather than the
> >>> `RetriableException`.
> >>>
> >>> The check in question
> >>> =====================
> >>>
> >>> Do we abort any undrained batches that are present on this transaction
> >>> if the transaction is in an aborting state? And, if we do, what would
> >>> be the reason sent back to the user for aborting these batches?
> >>>
> >>> Logic for this
> >>> ==============
> >>>
> >>> If the transaction `isAborting` and `hasAbortableError` and the
> >>> `lastError()` is not empty -> then there has been some error which
> >>> will cause / has caused the transaction to abort and this *is* a
> >>> runtime exception. This same exception should be sent back to the user.
> >>>
> >>> If the transaction `isAborting` and `lastError()` is empty -> then for
> >>> some unknown reason (maybe even user initiated, according to the
> >>> tests), the transaction manager has started to abort the transaction.
> >>> In this case, the newly proposed exception should be sent back to the
> >>> user.
> >>>
> >>> Reasoning
> >>> =========
> >>>
> >>> Prima facie - I do not think this is a `RetriableException`.
> >>>
> >>> If the user has chosen to abort this transaction, then it would be up
> >>> to the user to choose whether to retry the exception, in which case it
> >>> is /*not*/ a `RetriableException`.
> >>>
> >>> If there is a case where the transaction manager has no error, but has
> >>> started to abort the exception, we still do not retry the transaction,
> >>> rather we abort any undrained batches - in which case, it is /*still
> >>> not*/ a `RetriableException`.
> >>>
> >>> Does that sound right?
> >>>
> >>> -Gokul
> >>>
> >>> On 29-08-2020 01:17, Jason Gustafson wrote:
> >>>> Hi Gokul,
> >>>>
> >>>> Thanks, I think it makes sense to use a separate exception type. +1 on
> >>>> Sophie's suggestion for `TransactionAbortedException`.
> >>>>
> >>>> Extending from `RetriableException` seems reasonable as well. I guess
> >>>> the
> >>>> only question is whether it's safe to catch it as a
> `RetriableException`
> >>>> and apply common retry logic. For a transactional producer, my
> >>>> expectation
> >>>> is that the application would abort the transaction and retry it.
> >>>> However,
> >>>> if the transaction is already being aborted, maybe it would be better
> to
> >>>> skip the abort. It might be helpful to have an example which shows
> >>>> how we
> >>>> expect applications to handle this.
> >>>>
> >>>> Thanks,
> >>>> Jason
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>> On Thu, Aug 27, 2020 at 6:25 PM Sophie Blee-Goldman
> >>>> <sop...@confluent.io>
> >>>> wrote:
> >>>>
> >>>>> Hey Gokul, thanks for taking up this KIP!
> >>>>>
> >>>>> I agree with Matthias that directly extending KafkaException may not
> be
> >>>>> ideal,
> >>>>> and we should instead extend APIException or RetriableException. Of
> the
> >>>>> two,
> >>>>> I think APIException would be more appropriate. My understanding is
> >>>>> that
> >>>>> RetriableException is generally reserved for internally retriable
> >>>>> exceptions
> >>>>> whereas APIException is used for pseudo-fatal exceptions that
> >>>>> require some
> >>>>> user input as to how to proceed (eg ProducerFencedException)
> >>>>>
> >>>>> I also agree that the name could be a bit more concise. My personal
> >>>>> vote
> >>>>> would be for "TransactionAbortedException" which seems a bit more
> >>>>> grammatically aligned with the other exceptions in Kafka.
> >>>>>
> >>>>> Cheers,
> >>>>> Sophie
> >>>>>
> >>>>> On Thu, Aug 27, 2020 at 6:01 PM Matthias J. Sax <mj...@apache.org>
> >>>>> wrote:
> >>>>>
> >>>>>> Thanks for the KIP. Looks good overall.
> >>>>>>
> >>>>>> However, I am wondering if the new exception should extend
> >>>>>> `KafkaException`? It seems, extending `ApiException` or maybe even
> >>>>>> `RetriableException` might be better?
> >>>>>>
> >>>>>> About the name itself. I would prefer something simpler like
> >>>>>> `AbortedTransactionException`.
> >>>>>>
> >>>>>> Thoughts?
> >>>>>>
> >>>>>>
> >>>>>> -Matthias
> >>>>>>
> >>>>>>
> >>>>>> On 8/27/20 10:24 AM, Gokul Srinivas wrote:
> >>>>>>> Hello all,
> >>>>>>>
> >>>>>>> I would like to propose the following KIP to throw a new non-fatal
> >>>>>>> exception whilst aborting transactions with non-flushed data. This
> >>>>>>> will
> >>>>>>> help users distinguish non-fatal errors and potentially retry the
> >>>>> batch.
> >>>>>>> *Issue *- https://issues.apache.org/jira/browse/KAFKA-10186
> >>>>>>> <https://issues.apache.org/jira/browse/KAFKA-10186>
> >>>>>>>
> >>>>>>> *KIP *-
> >>>>>>>
> >>
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-654:+Aborted+transaction+with+non-flushed+data+should+throw+a+non-fatal+exception
> >>>>>>> <
> >>
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-654:+Aborted+transaction+with+non-flushed+data+should+throw+a+non-fatal+exception
> >>>>>>>
> >>>>>>> Please let me know how best we can proceed with this.
> >>>>>>>
> >>>>>>> -Gokul
> >>>>>>>
> >>>>>>>
>

Reply via email to