Hi TaiJuWu,

I find this adding lot's of complexity and I am still not convinced by the
added value. IMO creating a producer instance per ack level is not
problematic and the behavior is clear for developers. What would be the
added value of the proposed change ?

Regards,


On Wed, Nov 6, 2024 at 7:50 AM TaiJu Wu <tjwu1...@gmail.com> wrote:

> Hi Fred and Greg,
>
> Thanks for your feedback and it really not straightforward but interesting!
> There are some behavior I expect.
>
> The current producer uses the *RecordAccumulator* to gather records, and
> the sender thread sends them in batches. We can track each record’s
> acknowledgment setting as it appends to the *RecordAccumulator*, allowing
> the *sender *to group batches by acknowledgment levels and topicPartition
> when processing.
>
> Regarding the statement, "Callbacks for records being sent to the same
> partition are guaranteed to execute in order," this is ensured when
> *max.inflight.request
> *is set to 1. We can send records with different acknowledgment levels in
> the order of acks-0, acks=1, acks=-1. Since we need to send batches with
> different acknowledgment levels batches to the broker, the callback will
> execute after each request is completed.
>
> In response to, "If so, are low-acks records subject to head-of-line
> blocking from high-acks records?," I believe an additional configuration is
> necessary to control this behavior. We could allow records to be either
> sync or async, though the callback would still execute after each batch
> with varying acknowledgment levels completes. To measure behavior across
> acknowledgment levels, we could also include acks in *ProducerIntercepor*.
>
> Furthermore, before this KIP, a producer could only include one acks level
> so sequence is premised. However, with this change, we can *ONLY* guarantee
> the sequence within records of the same acknowledgment level because we may
> send up to three separate requests to brokers.
> Best,
> TaiJuWu
>
>
> TaiJu Wu <tjwu1...@gmail.com> 於 2024年11月6日 週三 上午10:01寫道:
>
> > Hi  Fred and Greg,
> >
> > Apologies for the delayed response.
> > Yes, you’re correct.
> > I’ll outline the behavior I expect.
> >
> > Thanks for your feedback!
> >
> > Best,
> > TaiJuWu
> >
> >
> > Greg Harris <greg.har...@aiven.io.invalid> 於 2024年11月6日 週三 上午9:48寫道:
> >
> >> Hi TaiJuWu,
> >>
> >> Thanks for the KIP!
> >>
> >> Can you explain in the KIP about the behavior when the number of acks is
> >> different for individual records? I think the current description using
> >> the
> >> word "straightforward" does little to explain that, and may actually be
> >> hiding some complexity.
> >>
> >> For example, the send() javadoc contains this: "Callbacks for records
> >> being
> >> sent to the same partition are guaranteed to execute in order." Is this
> >> still true when acks vary for records within the same partition?
> >> If so, are low-acks records subject to head-of-line-blocking from
> >> high-acks
> >> records? It seems to me that this feature is useful when acks is
> specified
> >> per-topic, but introduces a lot of edge cases that are underspecified.
> >>
> >> Thanks,
> >> Greg
> >>
> >>
> >> On Tue, Nov 5, 2024 at 4:52 PM TaiJu Wu <tjwu1...@gmail.com> wrote:
> >>
> >> > Hi Chia-Ping,
> >> >
> >> > Thanks for your feedback.
> >> > I have updated KIP based on your suggestions.
> >> >
> >> > Best,
> >> > Stanley
> >> >
> >> > Chia-Ping Tsai <chia7...@apache.org> 於 2024年11月5日 週二 下午4:41寫道:
> >> >
> >> > > hi TaiJuWu,
> >> > >
> >> > > Q0: Could you please add getter (Short acks()) to "public interface"
> >> > > section?
> >> > >
> >> > > Q1: Could you please add RPC json reference to prove "been available
> >> at
> >> > > the RPC-level,"
> >> > >
> >> > > Q2: Could you please add link to producer docs to prove "share a
> >> single
> >> > > producer instance across multiple threads"
> >> > >
> >> > > Thanks,
> >> > > Chia-Ping
> >> > >
> >> > > On 2024/11/05 01:28:36 吳岱儒 wrote:
> >> > > > Hi all,
> >> > > >
> >> > > > I open a KIP-1107: Adding record-level acks for producers
> >> > > > <
> >> > >
> >> >
> >>
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-1107%3A++Adding+record-level+acks+for+producers
> >> > > >
> >> > > > to
> >> > > > reduce the limitation associated with reusing KafkaProducer.
> >> > > >
> >> > > >
> >> > >
> >> >
> >>
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-1107%3A++Adding+record-level+acks+for+producers
> >> > > >
> >> > > > Feedbacks and suggestions are welcome.
> >> > > >
> >> > > > Thanks,
> >> > > > TaiJuWu
> >> > > >
> >> > >
> >> >
> >>
> >
>

Reply via email to