Hi all,

I updated the KIP as follows:
1) added `TxnSendOption` with two possible values (NONE,
IGNORE_SEND_ERRORS).
2) added the new `send` method with three input parameters to `Producer`
and `KafkaProducer`.
3) removed `CommitOption` and `commitTransaction(CommitOption)` from
`Producer` and `KafkaProducer`.

Thanks,
Alieh

On Thu, Jun 27, 2024 at 8:14 PM Justine Olshan <jols...@confluent.io.invalid>
wrote:

> Hey Alieh,
>
> I see there are two options now. So folks will be discussing the approaches
> and deciding the best way forward before we vote?
> I do think there could be a problem with the approach on commit if we get
> stuck on an earlier error and have more records (potentially on new
> partitions) to commit as the current PR is implemented.
>
> I guess this takes us back to the question of whether the error should be
> cleared on send.
>
> (And I guess at the back of my mind, I'm wondering if there is a way we can
> validate the "posion pill" records application side before we even try to
> send them)
>
> Justine
>
> On Wed, Jun 26, 2024 at 4:38 PM Alieh Saeedi <asae...@confluent.io.invalid
> >
> wrote:
>
> > Hi Justine,
> >
> > I did not update the KIP with `TxnSendOption` since I thought it'd be
> > better discussed here beforehand.
> > right now, there are 2 PRs:
> > - the PR that implements the current version of the KIP:
> > https://github.com/apache/kafka/pull/16332
> > - the POC PR that clarifies the `TxnSendOption`:
> > https://github.com/apache/kafka/pull/16465
> >
> > Bests,
> > Alieh
> >
> > On Thu, Jun 27, 2024 at 12:42 AM Justine Olshan
> > <jols...@confluent.io.invalid> wrote:
> >
> > > Hey Alieh,
> > >
> > > I think I am a little confused. Are the 3 points above addressed by the
> > KIP
> > > or did something change? The PR seems to not include this change and
> > still
> > > has the CommitOption as well.
> > >
> > > Thanks,
> > > Justine
> > >
> > > On Wed, Jun 26, 2024 at 2:15 PM Alieh Saeedi
> > <asae...@confluent.io.invalid
> > > >
> > > wrote:
> > >
> > > > Hi all,
> > > >
> > > >
> > > > Looking at the PR <https://github.com/apache/kafka/pull/16332>
> > > > corresponding to the KIP, there are some points worthy of mention:
> > > >
> > > >
> > > > 1) clearing the error ends up dirty/messy code in
> `TransactionManager`.
> > > >
> > > > 2) By clearing the error, we are actually doing an illegal transition
> > > from
> > > > `ABORTABLE_ERROR` to `IN_TRANSACTION` which is conceptually not
> > > acceptable.
> > > > This can be the root cause of some issues, with perhaps further
> future
> > > > changes by others.
> > > >
> > > > 3) If the poison pill record `r1` causes a transition to the error
> > state
> > > > and then the next record `r2` requires adding a partition to the
> > > > transaction, the action fails due to being in the error state. In
> this
> > > > case, clearing errors during `commitTnx(CLEAR_SEND_ERROR)` is too
> late.
> > > > However, this case can NOT be the main concern as soon as KIP-890 is
> > > fully
> > > > implemented.
> > > >
> > > >
> > > > My suggestion is to solve the problem where it arises. If the
> > transition
> > > to
> > > > the error state does not happen during `send()`, we do not need to
> > clear
> > > > the error later. Therefore, instead of `CommitOption`, we can define
> a
> > > > `TxnSendOption` and prevent the `send()` method from going to the
> error
> > > > state in case 1) we're in a transaction and 2) the user asked for
> > > > IGONRE_SEND_ERRORS. For more clarity, you can take a look at the POC
> PR
> > > > <https://github.com/apache/kafka/pull/16465>.
> > > >
> > > > Cheers,
> > > > Alieh
> > > >
> > >
> >
>

Reply via email to