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