Hello Kirk !

Thank you for your comments !

KT1: Yes, you are correct. The issue is not unique to the initial
heartbeat; there can always be cases where the broker might lose connection
with a member.

KT2: Currently, if the client doesn't have a member ID and the memberEpoch
equals 0, the coordinator will generate a UUID as the member ID for the
client. However, at the RPC level, the member ID is sent as a literal
string, meaning there are no restrictions on the format at this level.
This also reminds me that we haven't reached a final conclusion on how to
enforce the use of UUIDs.
>From our previous discussions, I recall two possible approaches:
The first is to validate the UUID on the server side, and if it's not
valid, throw an exception to the client.
The second is to document a recommendation for clients to use UUIDs as
member IDs, without strictly enforcing it.
I think it's time to decide on the approach we want to take.

KT3: Yes, "session" can be considered synonymous with "membership" in this
context.

KT4: Thank you for pointing that out. I will update the wording to
specifically say this behavior is for consumers.

Thanks again for your comments.

Best regards,
TengYao

Kirk True <k...@kirktrue.pro> 於 2024年8月30日 週五 上午12:39寫道:

> Hi TengYao!
>
> Sorry for being late to the discussion...
>
> After reading the thread and then the KIP, I had a few questions/comments:
>
> KT1: In Motivation, it states: "This scenario can result in the broker
> registering a new member for which it will never receive a proper leave
> request.” Just to be clear, the broker will always have cases where it
> might lose connection with a member. That’s not unique to the initial
> heartbeat, right?
>
> KT2: There was a bit of back and forth about format of the member ID. From
> what I gathered in the thread, the member ID is still defined in the RPC as
> a string and not a UUID, right? The KIP states that the “client must
> generate a UUID as the member ID” and that the “server will validate that a
> valid UUID is provided.” Is that a change for the server, or is it already
> enforced as a UUID?
>
> KT3: Lianet mentioned some confusion over the use of the word “session.”
> Isn’t “session” synonymous with “membership?”
>
> KT4: Under “Member ID Lifecycle,” it states: "The client should reuse the
> same UUID as the member ID for all heartbeats and rejoin attempts to
> maintain continuity within the group.” Could we change the first part of
> that to “The Consumer instance should…” We do have lifetimes that extend
> past the lifetime of a client instance (such as the transaction ID).
>
> Thanks,
> Kirk
>
> > On Aug 29, 2024, at 1:28 AM, TengYao Chi <kiting...@gmail.com> wrote:
> >
> > Hi David,
> >
> > Thank you for pointing that out.
> > I have updated the content of the KIP based on Lianet's and your
> feedback.
> > Please take a look and let me know your thoughts.
> >
> > Best regards,
> > TengYao
> >
> > David Jacot <dja...@confluent.io.invalid> 於 2024年8月29日 週四 下午3:20寫道:
> >
> >> Hi TengYao,
> >>
> >> Thanks for the update. I haven't fully read it yet but I will soon.
> >>
> >> LM4: This is incorrect. The consumer must keep its member id during its
> >> entire lifetime (until the process stops or dies). The protocol
> stipulates
> >> that a member must rejoin with the same member id and the member epoch
> set
> >> to zero when an FENCED_MEMBER_EPOCH occurs. This allows the member to
> >> resynchronize itself. We should not change this behavior. I think that
> we
> >> should see the client side generation id as an incarnation id of the
> >> application. It is generated once and kept until it stops or dies.
> >>
> >> Best,
> >> David
> >>
> >> On Thu, Aug 29, 2024 at 6:21 AM TengYao Chi <kiting...@gmail.com>
> wrote:
> >>
> >>> Hello Lianet !
> >>>
> >>> Thanks for the reviews and suggestions!
> >>>
> >>> LM1: Indeed, we plan to enforce client-side ID generation in the
> future,
> >>> and it is not an alternative. I will change the title accordingly.
> >>>
> >>> LM2: Yes, that's the expectation. I will add that statement to the
> public
> >>> interface section.
> >>>
> >>> LM3: Thank you for the high-level perspective review. I think you're
> >> right;
> >>> our intention isn't very clear since it was placed at the end of the
> >>> section. I will try to rephrase that section to make it more obvious.
> >>>
> >>> LM4: Regarding the definition of "session" in this KIP, I believe it
> >> refers
> >>> to the period between the *first-time heartbeat* and when the *consumer
> >>> leaves the group* (whether through a graceful shutdown or a heartbeat
> >>> timeout). The consumer should reuse its UUID if it has been generated
> >>> before. The only situation in which it will regenerate the UUID is if
> the
> >>> coordinator finds that there is already a consumer with the same UUID.
> >>> IIRC, the coordinator should compare the member epochs, and the
> >>> later-joined consumer should be fenced off by the coordinator due to
> >> having
> >>> a lower member epoch. Once the consumer receives a
> `FENCED_MEMBER_EPOCH`
> >>> error, it will generate a new UUID and attempt to rejoin. I will
> clarify
> >>> this in the KIP.
> >>>
> >>> Thanks again for your reviews, I really appreciate it.
> >>>
> >>> Best regards,
> >>> TengYao
> >>>
> >>> Lianet M. <liane...@gmail.com> 於 2024年8月28日 週三 下午7:12寫道:
> >>>
> >>>> Hello TengYao! Thanks for taking on this issue, we've been going
> around
> >>> it
> >>>> for a while.
> >>>>
> >>>> LM1: About the title of the KIP: "Enable ID Generation for Clients
> over
> >>> the
> >>>> ConsumerGroupHeartbeat RPC". I find it confusing because it hints that
> >>>> we're adding it as an alternative (which was discussed and discarded,
> >> in
> >>>> favour of really enforcing it). It's also missing the core change imo,
> >>>> which is "where" the generation happens. So, maybe more to the point
> >> with
> >>>> something along the lines of "Client-side generated ID for clients
> over
> >>>> ConsumerGroupHeartbeat RPC"?
> >>>>
> >>>> LM2: On the public interfaces section, the KIP states that "the server
> >>> will
> >>>> reject the request", but we should agree on the specific error type. I
> >>>> expect it should fail with an InvalidRequestException, is that the
> >>>> intention? (This was also suggested in the discussion thread before
> but
> >>> is
> >>>> not in the KIP).
> >>>>
> >>>> LM3. Related to my previous point, I find that to be the true
> >>> public-facing
> >>>> change (member ID mandatory at the protocol level), but it's only at
> >> the
> >>>> end of the Public interfaces changes, kind of lost among details of
> how
> >>>> we're going to do it. Should we rephrase that section with the actual
> >>>> change first, and the hows after (ex. Bumping the version is not the
> >>>> public-facing change in this case, it's just the mechanism to properly
> >>>> introduce our change)
> >>>>
> >>>> LM4. Regarding the lifetime of the UUID: the KIP states we will
> "Verify
> >>>> that the UUID remains consistent across all subsequent heartbeats
> >> during
> >>>> the session". What is this "session" referring to here? I would expect
> >>> that
> >>>> the UUID is associated to a consumer instance (generated for the
> >> consumer
> >>>> the first time it needs to send a HB if it doesn't have the UUID yet.
> >>> From
> >>>> there on, every time it needs to send a "first HB" again, it will
> reuse
> >>> its
> >>>> UUID, is that the intention? Note that we should consider that the
> same
> >>>> consumer instance may have many "first heartbeats", meaning heartbeats
> >> to
> >>>> join the group when it's not part of it (ex. consumer unsubscribe +
> >>>> subscribe, fenced, stale). Is this the intention or are you
> considering
> >>> the
> >>>> lifetime differently? We should clarify it in the KIP.
> >>>>
> >>>> Thanks!
> >>>>
> >>>> Lianet
> >>>>
> >>>> On Tue, Aug 27, 2024 at 2:27 AM TengYao Chi <kiting...@gmail.com>
> >> wrote:
> >>>>
> >>>>> Hi everyone,
> >>>>>
> >>>>> I have revised this KIP multiple times based on the feedback from our
> >>>>> discussions.
> >>>>> I would greatly appreciate it if you could review it when you have
> >> the
> >>>>> time.
> >>>>> If there are no further comments or suggestions, I plan to proceed
> >> with
> >>>>> initiating a vote soon.
> >>>>>
> >>>>> Best regards,
> >>>>> TengYao
> >>>>>
> >>>>> TengYao Chi <kiting...@gmail.com> 於 2024年8月23日 週五 下午2:43寫道:
> >>>>>
> >>>>>> Hi Andrew,
> >>>>>> Thank you for your previous feedback and insights.
> >>>>>> Your contributions have added valuable perspectives to the
> >>> discussions.
> >>>>>> And we also benefit from the comparison of different solutions.
> >>>>>> I’m also looking forward to seeing an initial version in KIP-932,
> >> as
> >>> it
> >>>>>> will provide a good reference for future implementations.
> >>>>>>
> >>>>>> Regarding your comment on AS2, I wanted to clarify that my
> >>>> specification
> >>>>>> references org.apache.kafka.common.Uuid.
> >>>>>> I believe we’re referring to the same class, and it might just be a
> >>>> small
> >>>>>> oversight due to the busy schedule.
> >>>>>>
> >>>>>> I want to express my gratitude once again for your many insightful
> >>>>>> comments, which have helped the discussion progress smoothly.
> >>>>>>
> >>>>>> Best regards,
> >>>>>> TengYao
> >>>>>>
> >>>>>>
> >>>>>> Andrew Schofield <andrew_schofi...@live.com> 於 2024年8月22日 週四
> >>>> 下午11:28寫道:
> >>>>>>
> >>>>>>> Hi TengYao,
> >>>>>>> I’ve been reading through the comments and I’m happy that the
> >> lobby
> >>>>>>> approach has not gained support.
> >>>>>>>
> >>>>>>> Assuming that this KIP is voted, I will be happy to change KIP-932
> >>> so
> >>>>>>> that it only supports client-side member ID generation. Because
> >> that
> >>>> KIP
> >>>>>>> is still
> >>>>>>> under development, I can do this in the first version of
> >>>>>>> ShareGroupHeartbeat.
> >>>>>>>
> >>>>>>> AS2: For the encoding section, I suppose the specific encoding
> >> which
> >>>>>>> is used is what org.apache.kafka.utils.Uuid uses.
> >>>>>>>
> >>>>>>> Thanks,
> >>>>>>> Andrew
> >>>>>>>
> >>>>>>>> On 14 Aug 2024, at 17:00, TengYao Chi <kiting...@gmail.com>
> >>> wrote:
> >>>>>>>>
> >>>>>>>> Hello Apoorv,
> >>>>>>>> Thank you for your feedback.
> >>>>>>>> Regarding the questions you raised, unfortunately, this KIP
> >> cannot
> >>>>>>>> guarantee the order of heartbeats. As with many classic
> >>> distributed
> >>>>>>> system
> >>>>>>>> challenges, what we can do is make our best effort to ensure
> >> that
> >>>>> there
> >>>>>>> are
> >>>>>>>> no idle members or stale assignments under normal circumstances.
> >>>>>>>>
> >>>>>>>> As for the lobby approach, I’m not a fan of it because it
> >> requires
> >>>>>>> adding a
> >>>>>>>> mechanism to maintain client state within the ConsumerGroup,
> >>> which,
> >>>> in
> >>>>>>> my
> >>>>>>>> view, resembles something like a two-phase commit. This would
> >>>>> introduce
> >>>>>>>> more complexity than the proposal in this KIP, which is
> >> something
> >>> we
> >>>>>>> want
> >>>>>>>> to avoid. KIP-848 aims to simplify the existing protocol, and
> >>> while
> >>>>> the
> >>>>>>>> lobby approach is a good one, I believe it is not the right fit
> >>> for
> >>>>> this
> >>>>>>>> particular situation.
> >>>>>>>>
> >>>>>>>> Best regards,
> >>>>>>>> TengYao
> >>>>>>>>
> >>>>>>>> TengYao Chi <kiting...@gmail.com> 於 2024年8月14日 週三 下午11:45寫道:
> >>>>>>>>
> >>>>>>>>> Hi David,
> >>>>>>>>>
> >>>>>>>>> I really appreciate your review and suggestions. As I am still
> >>>>> gaining
> >>>>>>>>> experience in writing KIPs, your input has been incredibly
> >>>> helpful. I
> >>>>>>> am
> >>>>>>>>> currently applying your suggestions to the KIP and will
> >> complete
> >>> it
> >>>>> as
> >>>>>>> soon
> >>>>>>>>> as possible.
> >>>>>>>>> Regarding the UUID part, I think we haven’t reached a
> >> conclusion
> >>>>>>> yet.(So
> >>>>>>>>> far according to this thread)
> >>>>>>>>> However, I will review the current implementation in the Kafka
> >>>> `Uuid`
> >>>>>>>>> class and include a brief specification in the KIP.
> >>>>>>>>>
> >>>>>>>>> Once again, thank you so much for your help.
> >>>>>>>>>
> >>>>>>>>> Best regards,
> >>>>>>>>> TengYao
> >>>>>>>>>
> >>>>>>>>> Chia-Ping Tsai <chia7...@gmail.com> 於 2024年8月14日 週三 下午11:14寫道:
> >>>>>>>>>
> >>>>>>>>>> hi Apoorv
> >>>>>>>>>>
> >>>>>>>>>>> As the memberId is now known to the client, and client might
> >>> send
> >>>>> the
> >>>>>>>>>> leave
> >>>>>>>>>> group heartbeat on shutdown prior to receiving the initial
> >>>> heartbeat
> >>>>>>>>>> response. If that's true then how do we guarantee that the 2
> >>>>> requests
> >>>>>>> to
> >>>>>>>>>> join and leave will be processed in order, which could still
> >>> leave
> >>>>>>> stale
> >>>>>>>>>> members or throw unknown member id exceptions?
> >>>>>>>>>>
> >>>>>>>>>> This is definitely a good question. the short answer: no
> >>> guarantee
> >>>>> but
> >>>>>>>>>> best
> >>>>>>>>>> efforts
> >>>>>>>>>>
> >>>>>>>>>> Please notice the root cause is "we have no enough time to
> >> wait
> >>>>>>> member id
> >>>>>>>>>> (response) when closing consumer". Sadly, we can' guarantee
> >> the
> >>>>>>> request
> >>>>>>>>>> order due to the same reason.
> >>>>>>>>>>
> >>>>>>>>>> However, in contrast to previous behavior, there is one big
> >>>> benefit
> >>>>>>> of new
> >>>>>>>>>> approach - we can try STONITH because we know the member id
> >>>>>>>>>>
> >>>>>>>>>> Best,
> >>>>>>>>>> Chia-Ping
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> Apoorv Mittal <apoorvmitta...@gmail.com> 於 2024年8月14日 週三
> >>>> 下午8:55寫道:
> >>>>>>>>>>
> >>>>>>>>>>> Hi TengYao,
> >>>>>>>>>>> Thanks for the KIP. Continuing on the point which Andrew
> >>>> mentioned
> >>>>> as
> >>>>>>>>>> AS1.
> >>>>>>>>>>>
> >>>>>>>>>>> As the memberId is now known to the client, and client might
> >>> send
> >>>>> the
> >>>>>>>>>> leave
> >>>>>>>>>>> group heartbeat on shutdown prior to receiving the initial
> >>>>> heartbeat
> >>>>>>>>>>> response. If that's true then how do we guarantee that the 2
> >>>>>>> requests to
> >>>>>>>>>>> join and leave will be processed in order, which could still
> >>>> leave
> >>>>>>> stale
> >>>>>>>>>>> members or throw unknown member id exceptions?
> >>>>>>>>>>>
> >>>>>>>>>>> Though the client side member id generation is helpful which
> >>> will
> >>>>>>>>>> represent
> >>>>>>>>>>> the same group perspective as from client and broker's end.
> >>> But I
> >>>>>>> think
> >>>>>>>>>> the
> >>>>>>>>>>> major concern we want to solve here is Stale Partition
> >>>> Assignments
> >>>>>>> which
> >>>>>>>>>>> might still exist with the new approach. I am leaning towards
> >>> the
> >>>>>>>>>>> suggestion mentioned by Andrew where partition assignment
> >>>> triggers
> >>>>> on
> >>>>>>>>>>> subsequent heartbeat when client acknowledges the initial
> >>>>> heartbeat,
> >>>>>>>>>>> delayed partition assignment.
> >>>>>>>>>>>
> >>>>>>>>>>> Though on a separate note, I have a different question. What
> >>>>> happens
> >>>>>>>>>> when
> >>>>>>>>>>> there is an issue with the client which sends the initial
> >>>> heartbeat
> >>>>>>>>>> without
> >>>>>>>>>>> memberId, then crashes and restarts? I think we must be
> >>>>> re-triggering
> >>>>>>>>>>> assignments and expiring members only after the heartbeat
> >>> session
> >>>>>>>>>> timeout?
> >>>>>>>>>>> If that's true then shall delayed partition assignment can
> >> help
> >>>>>>> benefit
> >>>>>>>>>> us
> >>>>>>>>>>> from this situation as well?
> >>>>>>>>>>>
> >>>>>>>>>>> Regards,
> >>>>>>>>>>> Apoorv Mittal
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> On Wed, Aug 14, 2024 at 12:51 PM David Jacot
> >>>>>>>>>> <dja...@confluent.io.invalid>
> >>>>>>>>>>> wrote:
> >>>>>>>>>>>
> >>>>>>>>>>>> Hi Andrew,
> >>>>>>>>>>>>
> >>>>>>>>>>>> Personally, I don't like the lobby approach. It makes things
> >>>> more
> >>>>>>>>>>>> complicated and it would require changing the records on the
> >>>>> server
> >>>>>>>>>> too.
> >>>>>>>>>>>> This is why I initially suggested the rejected alternative
> >> #2
> >>>>> which
> >>>>>>> is
> >>>>>>>>>>>> pretty close but also not perfect.
> >>>>>>>>>>>>
> >>>>>>>>>>>> I'd like to clarify one thing. The ConsumerGroupHeartbeat
> >> API
> >>>>>>> already
> >>>>>>>>>>>> supports generating the member id on the client so we don't
> >>> need
> >>>>> any
> >>>>>>>>>>>> conditional logic on the client side. This is actually what
> >> we
> >>>>>>> wanted
> >>>>>>>>>> to
> >>>>>>>>>>> do
> >>>>>>>>>>>> in the first place but the idea got pushed back by Magnus
> >> back
> >>>>> then
> >>>>>>>>>>> because
> >>>>>>>>>>>> generating uuid from librdkafka required a new dependency.
> >> It
> >>>>> turns
> >>>>>>>>>> out
> >>>>>>>>>>>> that librdkafka has that dependency today. In retrospect, we
> >>>>> should
> >>>>>>>>>> have
> >>>>>>>>>>>> pushed back on this. Long story short, we can just do it.
> >> The
> >>>>>>>>>> proposal in
> >>>>>>>>>>>> this KIP is to make the member id required in future
> >> versions.
> >>>> We
> >>>>>>>>>> could
> >>>>>>>>>>>> also decide not to do it and to keep supporting both
> >>>> approaches. I
> >>>>>>>>>> would
> >>>>>>>>>>>> also be fine with this.
> >>>>>>>>>>>>
> >>>>>>>>>>>> Best,
> >>>>>>>>>>>> David
> >>>>>>>>>>>>
> >>>>>>>>>>>> On Wed, Aug 14, 2024 at 12:30 PM Andrew Schofield <
> >>>>>>>>>>>> andrew_schofi...@live.com>
> >>>>>>>>>>>> wrote:
> >>>>>>>>>>>>
> >>>>>>>>>>>>> Hi TengYao,
> >>>>>>>>>>>>> Thanks for your response. I’ll have just one more try to
> >>>>> persuade.
> >>>>>>>>>>>>> I feel that I will need to follow the approach with KIP-932
> >>>> when
> >>>>>>>>>> we’ve
> >>>>>>>>>>>>> made a decision, so I do have more than a passing interest
> >> in
> >>>>> this.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> A group member in the lobby is in the group, but it does
> >> not
> >>>> have
> >>>>>>>>>> any
> >>>>>>>>>>>>> assignments. A member of a consumer group can have no
> >>> assigned
> >>>>>>>>>>>>> partitions (such as 5 CG members subscribed to a topic
> >> with 4
> >>>>>>>>>>>> partitions),
> >>>>>>>>>>>>> so it’s a situation that consumer group members already
> >>> expect.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> One of Kafka’s strengths is the way that we handle API
> >>>>> versioning.
> >>>>>>>>>>>>> But, there is a cost - the behaviour is different depending
> >>> on
> >>>>> the
> >>>>>>>>>> RPC
> >>>>>>>>>>>>> version. KIP-848 is on the cusp of completion, but we’re
> >>>> already
> >>>>>>>>>> adding
> >>>>>>>>>>>>> conditional logic for v0/v1 for ConsumerGroupHeartbeat.
> >>> That’s
> >>>> a
> >>>>>>>>>> pity.
> >>>>>>>>>>>>> Only a minor issue, but it’s unfortunate.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Thanks,
> >>>>>>>>>>>>> Andrew
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>> On 14 Aug 2024, at 08:47, TengYao Chi <
> >> kiting...@gmail.com>
> >>>>>>>>>> wrote:
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Hello Andrew
> >>>>>>>>>>>>>> Thank you for your thoughtful suggestions and getting the
> >>>>>>>>>> discussion
> >>>>>>>>>>>>> going.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> To AS1:
> >>>>>>>>>>>>>> In the current scenario where the server generates the
> >> UUID,
> >>>> if
> >>>>>>>>>> the
> >>>>>>>>>>>>> client
> >>>>>>>>>>>>>> shuts down before receiving the memberId generated by the
> >> GC
> >>>>>>>>>>>> (regardless
> >>>>>>>>>>>>> of
> >>>>>>>>>>>>>> whether it’s a graceful shutdown or not), the GC will
> >> still
> >>>> have
> >>>>>>>>>> to
> >>>>>>>>>>>> wait
> >>>>>>>>>>>>>> for the heartbeat timeout because the client doesn’t know
> >>> its
> >>>>>>>>>>> memberId.
> >>>>>>>>>>>>>> This KIP indeed cannot completely resolve the idempotency
> >>>> issue,
> >>>>>>>>>> but
> >>>>>>>>>>> it
> >>>>>>>>>>>>> can
> >>>>>>>>>>>>>> better handle shutdown scenarios under normal
> >> circumstances
> >>>>>>>>>> because
> >>>>>>>>>>> the
> >>>>>>>>>>>>>> client always knows its memberId. Even if the client shuts
> >>>> down
> >>>>>>>>>>>>> immediately
> >>>>>>>>>>>>>> after the initial heartbeat, as long as it performs a
> >>> graceful
> >>>>>>>>>>> shutdown
> >>>>>>>>>>>>> and
> >>>>>>>>>>>>>> sends a leave heartbeat, the GC can manage the situation
> >> and
> >>>>>>>>>> remove
> >>>>>>>>>>> the
> >>>>>>>>>>>>>> member. Therefore, the goal of this KIP is to address the
> >>>> issue
> >>>>>>>>>> where
> >>>>>>>>>>>> the
> >>>>>>>>>>>>>> GC has to wait for the heartbeat timeout due to the client
> >>>>> leaving
> >>>>>>>>>>>>> without
> >>>>>>>>>>>>>> knowing its memberId, which leads to reduced throughput
> >> and
> >>>>>>>>>> limited
> >>>>>>>>>>>>>> scalability.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> The solution you suggest has also been proposed by David.
> >>> The
> >>>>>>>>>> concern
> >>>>>>>>>>>>> with
> >>>>>>>>>>>>>> this approach is that it introduces additional complexity
> >>> for
> >>>>>>>>>>>>>> compatibility, as the new server would not immediately add
> >>> the
> >>>>>>>>>> member
> >>>>>>>>>>>> to
> >>>>>>>>>>>>>> the group, while the old server would. This requires
> >> clients
> >>>> to
> >>>>>>>>>>>>>> differentiate whether their memberId has been added to the
> >>>> group
> >>>>>>>>>> or
> >>>>>>>>>>>> not,
> >>>>>>>>>>>>>> which could result in unexpected logs.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Best Regards,
> >>>>>>>>>>>>>> TengYao
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Andrew Schofield <andrew_schofi...@live.com> 於 2024年8月14日
> >>> 週三
> >>>>>>>>>>>> 上午12:29寫道:
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Hi TengYao,
> >>>>>>>>>>>>>>> Thanks for the KIP. I wonder if there’s a different way
> >> to
> >>>>> close
> >>>>>>>>>>> what
> >>>>>>>>>>>>>>> is quite a small window.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> AS1: It is true that the initial heartbeat is not
> >>> idempotent,
> >>>>> but
> >>>>>>>>>>> this
> >>>>>>>>>>>>>>> remains
> >>>>>>>>>>>>>>> true with this KIP. It’s just differently not idempotent.
> >>> If
> >>>>> the
> >>>>>>>>>>>> client
> >>>>>>>>>>>>>>> makes its
> >>>>>>>>>>>>>>> own member ID, sends a request and dies, the GC will
> >> still
> >>>> have
> >>>>>>>>>>> added
> >>>>>>>>>>>>>>> the member to the group and it will hang around until the
> >>>>> session
> >>>>>>>>>>>>> expires.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> I wonder if the GC could still generate the member ID in
> >>>>>>>>>> response to
> >>>>>>>>>>>> the
> >>>>>>>>>>>>>>> first
> >>>>>>>>>>>>>>> heartbeat, and put the member in a special PENDING state
> >>> with
> >>>>> no
> >>>>>>>>>>>>>>> assignments until the client sends the next heartbeat,
> >> thus
> >>>>>>>>>>> confirming
> >>>>>>>>>>>>> it
> >>>>>>>>>>>>>>> has received the member ID. This would not be a protocol
> >>>> change
> >>>>>>>>>> at
> >>>>>>>>>>>> all,
> >>>>>>>>>>>>>>> just
> >>>>>>>>>>>>>>> a change to the GC to keep a new member in the lobby
> >> until
> >>>> it’s
> >>>>>>>>>>>>> comfirmed
> >>>>>>>>>>>>>>> it knows its member ID.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Thanks,
> >>>>>>>>>>>>>>> Andrew
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> On 13 Aug 2024, at 15:59, TengYao Chi <
> >>> kiting...@gmail.com>
> >>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> Hi Chia-Ping,
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> Thanks for review and suggestions.
> >>>>>>>>>>>>>>>> I have updated the content of KIP accordingly.
> >>>>>>>>>>>>>>>> Please take a look.
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> Best regards,
> >>>>>>>>>>>>>>>> TengYao
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> Chia-Ping Tsai <chia7...@apache.org> 於 2024年8月13日 週二
> >>>>> 下午9:45寫道:
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> hi TengYao
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> thanks for this KIP.
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> 1) could you please describe the before/after behavior
> >> in
> >>>> the
> >>>>>>>>>>>>> "Proposed
> >>>>>>>>>>>>>>>>> Changes" section? IIRC, current RPC allows HB having
> >>> member
> >>>>> id
> >>>>>>>>>>>>>>> generated by
> >>>>>>>>>>>>>>>>> client, right? If HB has no member ID, server will
> >>> generate
> >>>>> one
> >>>>>>>>>>> and
> >>>>>>>>>>>>> then
> >>>>>>>>>>>>>>>>> return. The new behavior will enforce HB "must" have
> >>> member
> >>>>> ID.
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> 2) could you please write the version number explicitly
> >>> in
> >>>>> the
> >>>>>>>>>> KIP
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> 3) how new client code handle the old HB? Does it
> >> always
> >>>>>>>>>> generate
> >>>>>>>>>>>>> member
> >>>>>>>>>>>>>>>>> ID on client-side even though that is not restricted?
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> Best,
> >>>>>>>>>>>>>>>>> Chia-Ping
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> On 2024/08/13 06:20:42 TengYao Chi wrote:
> >>>>>>>>>>>>>>>>>> Hello everyone,
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> I would like to start a discussion thread on KIP-1082,
> >>>> which
> >>>>>>>>>>>> proposes
> >>>>>>>>>>>>>>>>>> enabling id generation for clients over the
> >>>>>>>>>>> ConsumerGroupHeartbeat
> >>>>>>>>>>>>> RPC.
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> Here is the KIP Link: KIP-1082
> >>>>>>>>>>>>>>>>>> <
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>
> >>>>>
> >>>>
> >>>
> >>
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-1082%3A+Enable+ID+Generation+for+Clients+over+the+ConsumerGroupHeartbeat+RPC
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> Please take a look and let me know what you think,
> >> and I
> >>>>> would
> >>>>>>>>>>>>>>> appreciate
> >>>>>>>>>>>>>>>>>> any suggestions and feedback.
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> Best regards,
> >>>>>>>>>>>>>>>>>> TengYao
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>
> >>>>
> >>>
> >>
>
>

Reply via email to