[ https://issues.apache.org/jira/browse/KAFKA-17116?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17869739#comment-17869739 ]
Chia-Ping Tsai commented on KAFKA-17116: ---------------------------------------- {quote} If the above two statements are true, what's the downside of letting the broker handle the member as it does today, namely removing it after some configured amount of time? {quote} yes, tow statements are true! I quote [~lianetm]'s comments "those partitions won't be re-assigned (broker waiting for the closed consumer to reconcile them), until the rebalance timeout expires. " {quote} I agree that it makes sense to augment the client logic to only send the 'leave group' request if we have a member ID. At this point, I'm -1 on the idea of introducing temporary IDs to handle edge cases like this. {quote} I also hate temporary ID after see the suggestions from [~dajac] :smile Also, I don't want to introduce large changes to just fix the edge case. That is why I prefer the approach of letting `AsyncConsumer` generate UUID for member Id > New consumer may not send effective leave group if member ID received after > close > ---------------------------------------------------------------------------------- > > Key: KAFKA-17116 > URL: https://issues.apache.org/jira/browse/KAFKA-17116 > Project: Kafka > Issue Type: Bug > Components: clients, consumer > Affects Versions: 3.8.0 > Reporter: Lianet Magrans > Assignee: TengYao Chi > Priority: Major > Labels: kip-848-client-support > Fix For: 3.9.0 > > > If the new consumer is closed after sending a HB to join, but before > receiving the response to it, it will send a leave group request but without > member ID (will simply fail with UNKNOWN_MEMBER_ID). This will make that the > broker will have a registered new member, for which it will never receive a > leave request for it. > # consumer.subscribe -> sends HB to join, transitions to JOINING > # consumer.close -> will transition to LEAVING and send HB with epoch -1 > (without waiting for in-flight requests) > # consumer receives response to initial HB, containing the assigned member > ID. It will simply ignore it because it's not in the group anymore > (UNSUBSCRIBED) > Note that the expectation, with the current logic, and main downsides of this > are: > # If the case was that the member received partitions on the first HB, those > partitions won't be re-assigned (broker waiting for the closed consumer to > reconcile them), until the rebalance timeout expires. > # Even if no partitions were assigned to it, the member will remain in the > group from the broker point of view (but not from the client POV). The member > will be eventually kicked out for not sending HBs, but only when it's session > timeout expires. -- This message was sent by Atlassian Jira (v8.20.10#820010)