Hi David, Thanks for the feedback.
Yes, I agree that the “UPGRADED” column name is better. I updated the KIP. Best, PoAn > On Nov 25, 2024, at 11:11 PM, PoAn Yang <yangp...@gmail.com> wrote: > > Hi Andrew, > > Thanks for the feedback. > > AS4: Change TARGET-ASSIGNMENT-EPOCH to ASSIGNMENT-EPOCH for “—describe —state > —verbose" in kafka-share-groups.sh. > > AS5: Remove TARGET-EPOCH and TARGET-ASSIGNMENT. > Change CURRENT-EPOCH to MEMBER-EPOCH and CURRENT-ASSIGNMENT to ASSIGNMENT for > “—describe —member —verbose” in kafka-share-groups.sh. > > Thanks, > PoAn > >> On Nov 25, 2024, at 10:48 PM, Andrew Schofield >> <andrew_schofield_j...@outlook.com> wrote: >> >> Hi PoAn, >> I've taken another pass over the KIP and have some more comments around the >> share >> group support. >> >> AS4: Share groups do not have the concept of a target assignment. As a >> result, >> the verbose state TARGET-ASSIGNMENT-EPOCH is a bit misleading from my >> point of view. ASSIGNMENT-EPOCH is better. >> >> AS5: Similarly for the verbose members output, the TARGET-EPOCH and >> TARGET-ASSIGNMENT are not really appropriate. Personally, I would prefer >> just MEMBER-EPOCH and ASSIGNMENT, and remove the "target" fields. >> >> Thanks, >> Andrew >> >> ________________________________________ >> From: PoAn Yang <yangp...@gmail.com> >> Sent: 24 November 2024 15:08 >> To: dev@kafka.apache.org <dev@kafka.apache.org> >> Subject: Re: [DISCUSS] KIP-1099: Extend kafka-consumer-groups command line >> tool to support new consumer group >> >> Hi Chia-Ping, >> >> Thanks for the suggestion. >> >> The “isClassic” field in ConsumerGroupDescribeResponse is a boolean value, >> so we can’t use it as the protocol string. >> I change the “PROTOCOL” column to “IS-CLASSIC” in kafka-consumer-groups.sh. >> It returns “true” if a member is in a classic group or it’s a classic member >> in a consumer group. >> In other cases, it returns “false”. >> >> I have a draft implementation in https://github.com/apache/kafka/pull/17872. >> >> Thanks, >> PoAn >> >>> On Nov 23, 2024, at 1:05 PM, Chia-Ping Tsai <chia7...@gmail.com> wrote: >>> >>> hi PoAn >>> >>> `isClassic` is good to me :) >>> >>> Best, >>> Chia-Ping >>> >>> PoAn Yang <yangp...@gmail.com> 於 2024年11月23日 週六 下午12:35寫道: >>> >>>> Hi Chia-Ping / David, >>>> >>>> Thanks for the great suggestion. >>>> >>>> How about using “isClassic”? >>>> The term like “isLegacy” may be equivocal in the future. >>>> For example, if we have a newer version of consumer / share consumer, the >>>> meaning will be different for different cases. >>>> If we use “isClassic”, for MemberDescription in ClassicGroupDescription, >>>> the value can be always “true”. >>>> In ConsumerGroupDescription, it’s “true” when it’s a classic member. >>>> In ShareGroupDescription, it’s always “false”. >>>> >>>> Thanks, >>>> PoAn >>>> >>>>> On Nov 23, 2024, at 1:02 AM, Chia-Ping Tsai <chia7...@gmail.com> wrote: >>>>> >>>>> hi DJ >>>>> >>>>>> My goal was to have a way to tell the user that his (new) consumer group >>>>> may have non-upgraded members yet. I wonder if we could use a boolean to >>>>> signal this, e.g. isLegacy. Then, in the CLI we could have a column which >>>>> is only displayed when they are non upgraded members. What do you think? >>>>> >>>>> Yes, this is a good approach, but the downside is that the new isLegacy >>>>> field in MemberDescription would be irrelevant for classic and shared >>>>> groups. This would require thorough documentation to clarify its purpose. >>>>> >>>>> Additionally, we could use a boolean instead of a string for the new >>>> field >>>>> in the RPC to reduce the request size. >>>>> Best, >>>>> Chia-Ping >>>>> >>>>> >>>>> >>>>> David Jacot <dja...@confluent.io.invalid> 於 2024年11月23日 週六 上午12:41寫道: >>>>> >>>>>> Hi both, >>>>>> >>>>>> Ah, I understand what you mean now. You're saying that we have two >>>> protocol >>>>>> fields. One at the group level and one at the member level (the new >>>> one). >>>>>> The two fields are actually two different things. The former is the >>>> name of >>>>>> the embedded protocol used in the classic protocol whereas the latter is >>>>>> the name of the protocol/api used. This is indeed confusing. >>>>>> >>>>>> My goal was to have a way to tell the user that his (new) consumer group >>>>>> may have non-upgraded members yet. I wonder if we could use a boolean to >>>>>> signal this, e.g. isLegacy. Then, in the CLI we could have a column >>>> which >>>>>> is only displayed when they are non upgraded members. What do you think? >>>>>> >>>>>> If we cannot find a good way to represent this, we could drop it from >>>> this >>>>>> KIP too. >>>>>> >>>>>> Best, >>>>>> David >>>>>> >>>>>> On Fri, Nov 22, 2024 at 5:12 PM PoAn Yang <yangp...@gmail.com> wrote: >>>>>> >>>>>>> Hi Chia-Ping / David, >>>>>>> >>>>>>> Thanks for the review and suggestions. >>>>>>> >>>>>>>>> I don't fully follow your comment so please excuse me if I say >>>>>> something >>>>>>>>> wrong. >>>>>>> >>>>>>> I think Chia-Ping wants to say: originally, the default protocol in >>>>>>> classic group is “consumer”. >>>>>>> After we have a new consumer group, the protocol of a classic member in >>>>>>> consumer group is “classic”. >>>>>>> The MemberDescription is used by both ClassicGroupDescription and >>>>>>> ConsumerGroupDescription. >>>>>>> If we add the protocol field to MemberDescription, the protocol of a >>>>>>> classic member in classic group is “consumer”, but it’s “classic” in >>>>>>> consumer group. >>>>>>> To avoid misleading word, we can add a new collection of member >>>> protocols >>>>>>> to ConsumerGroupDescription only. >>>>>>> The original goal is to show member protocol during consumer migration, >>>>>> so >>>>>>> we don’t need to add this information to ClassicGroupDescription. >>>>>>> >>>>>>> Please correct me if I misunderstood anything. >>>>>>> >>>>>>> Thanks, >>>>>>> PoAn >>>>>>> >>>>>>>> On Nov 22, 2024, at 7:00 PM, Chia-Ping Tsai <chia7...@gmail.com> >>>>>> wrote: >>>>>>>> >>>>>>>> hi DJ >>>>>>>> >>>>>>>>> How about we use another Jira to add “SHARE” to GroupProtocol and >>>>>> change >>>>>>>> return type of ModernGroup#protocolType? >>>>>>>> >>>>>>>> This is not my comment ... sorry for the incorrect quote :( >>>>>>>> >>>>>>>>> A member in a classic group should report "classic". >>>>>>>> >>>>>>>> I completely agree. However, in this case, >>>>>>> ClassicGroupDescription#protocol >>>>>>>> returns 'consumer', while ClassicGroupDescription#members[x].protocol >>>>>>>> returns 'classic'. This inconsistency feels a bit strange to me. >>>>>>>> >>>>>>>> Best, >>>>>>>> Chia-Ping >>>>>>>> >>>>>>>> >>>>>>>> David Jacot <dja...@confluent.io.invalid> 於 2024年11月22日 週五 下午6:51寫道: >>>>>>>> >>>>>>>>> Hi Chia, >>>>>>>>> >>>>>>>>>>> LM4: I agree it’s better to use a type like GroupProtocol enum, but >>>>>> I >>>>>>>>> would like to align the format with kafka-groups.sh. >>>>>>>>> How about we use another Jira to add “SHARE” to GroupProtocol and >>>>>> change >>>>>>>>> return type of ModernGroup#protocolType? >>>>>>>>> >>>>>>>>> My understanding is that `GroupProtocol` is used to drive the config >>>>>> of >>>>>>> the >>>>>>>>> `Consumer`. Hence adding `Share` seems wrong to me. Or are you >>>>>>> referring to >>>>>>>>> another GroupProtocol enum? Perhaps GroupType enum? >>>>>>>>> >>>>>>>>>> In fact, I'm wondering if we should even add 'protocol' to >>>>>>>>> MemberDescription, >>>>>>>>> since the field has different values between classic and consumer >>>>>>> groups—it >>>>>>>>> shows 'consumer' in classic groups, whereas it shows 'classic' in >>>>>>> consumer >>>>>>>>> groups. Yes, it seems like a typo, but it's true. This inconsistency >>>>>>> feels >>>>>>>>> confusing to me. For example, users call Admin#describeConsumerGroups >>>>>>> and >>>>>>>>> see that a member has the 'consumer' protocol when it's in a classic >>>>>>> group. >>>>>>>>> Then, if the group is upgraded to a consumer group, calling >>>>>>>>> Admin#describeConsumerGroups again shows the protocol as 'classic' >>>> for >>>>>>> the >>>>>>>>> same member. >>>>>>>>> >>>>>>>>> I don't fully follow your comment so please excuse me if I say >>>>>> something >>>>>>>>> wrong. >>>>>>>>> >>>>>>>>> I think that it should work as follows: >>>>>>>>> * A member in a classic group should report "classic". >>>>>>>>> * A member using the consumer protocol in a consumer group should >>>>>> report >>>>>>>>> "consumer". >>>>>>>>> * A member using the classic protocol in a consumer group should >>>>>> report >>>>>>>>> "classic". >>>>>>>>> * A member in a share group should report "share". >>>>>>>>> >>>>>>>>>> If all we want to do is distinguish classic members in the >>>>>>>>> ConsumerGroupDescription, then we shouldn't modify the common >>>>>>>>> MemberDescription structure. Instead, we could add a collection to >>>>>>>>> ConsumerGroupDescription to trace members using the classic protocol, >>>>>>> which >>>>>>>>> would allow us to enrich the output of command-line tools. >>>>>>>>> >>>>>>>>> Personally, I believe that using different collections per protocol >>>>>>> types >>>>>>>>> is not necessary. A field in the member is more than enough. >>>>>>>>> >>>>>>>>> Best, >>>>>>>>> DJ >>>>>>>>> >>>>>>>>> On Fri, Nov 22, 2024 at 12:01 PM Chia-Ping Tsai <chia7...@gmail.com> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> hi PoAn >>>>>>>>>> >>>>>>>>>>> LM4: I agree it’s better to use a type like GroupProtocol enum, but >>>>>> I >>>>>>>>>> would like to align the format with kafka-groups.sh. >>>>>>>>>> How about we use another Jira to add “SHARE” to GroupProtocol and >>>>>>> change >>>>>>>>>> return type of ModernGroup#protocolType? >>>>>>>>>> >>>>>>>>>> MemberDescription is also used by ClassicGroupDescription, and in >>>>>>> classic >>>>>>>>>> groups, the protocol can be an arbitrary string, so we can't use an >>>>>>> enum. >>>>>>>>>> >>>>>>>>>> In fact, I'm wondering if we should even add 'protocol' to >>>>>>>>>> MemberDescription, >>>>>>>>>> since the field has different values between classic and consumer >>>>>>>>> groups—it >>>>>>>>>> shows 'consumer' in classic groups, whereas it shows 'classic' in >>>>>>>>> consumer >>>>>>>>>> groups. Yes, it seems like a typo, but it's true. This inconsistency >>>>>>>>> feels >>>>>>>>>> confusing to me. For example, users call >>>> Admin#describeConsumerGroups >>>>>>> and >>>>>>>>>> see that a member has the 'consumer' protocol when it's in a classic >>>>>>>>> group. >>>>>>>>>> Then, if the group is upgraded to a consumer group, calling >>>>>>>>>> Admin#describeConsumerGroups again shows the protocol as 'classic' >>>>>> for >>>>>>>>> the >>>>>>>>>> same member. >>>>>>>>>> >>>>>>>>>> If all we want to do is distinguish classic members in the >>>>>>>>>> ConsumerGroupDescription, then we shouldn't modify the common >>>>>>>>>> MemberDescription structure. Instead, we could add a collection to >>>>>>>>>> ConsumerGroupDescription to trace members using the classic >>>> protocol, >>>>>>>>> which >>>>>>>>>> would allow us to enrich the output of command-line tools. >>>>>>>>>> Best, >>>>>>>>>> Chia-Ping >>>>>>>>>> >>>>>>>>>> PoAn Yang <yangp...@gmail.com> 於 2024年11月22日 週五 下午3:46寫道: >>>>>>>>>> >>>>>>>>>>> Hi Lianet / Jeff, >>>>>>>>>>> >>>>>>>>>>> Thanks for the review. >>>>>>>>>>> >>>>>>>>>>> LM5: The kafka-share-groups.sh also uses “—describe” to show >>>> offsets >>>>>>>>>>> information. >>>>>>>>>>> Change to use “—describe —state —verbose” to show group level >>>>>>>>> information >>>>>>>>>>> in kafka-share-groups.sh. >>>>>>>>>>> >>>>>>>>>>> LM6: Update the example. >>>>>>>>>>> >>>>>>>>>>> LM7: Add a description to mention “—verbose” is a new option in >>>>>>>>>>> ShareGroupCommandOptions. >>>>>>>>>>> >>>>>>>>>>> JK2: Yes, add the statement about format change for ASSIGNMENT >>>>>> value. >>>>>>>>>>> >>>>>>>>>>> Thanks, >>>>>>>>>>> PoAn >>>>>>>>>>> >>>>>>>>>>>> On Nov 22, 2024, at 7:35 AM, Jeff Kim <jeffkb...@apache.org> >>>>>> wrote: >>>>>>>>>>>> >>>>>>>>>>>> Hi PoAn, >>>>>>>>>>>> >>>>>>>>>>>> JK2: Can we state in the KIP that we will reformat the existing >>>>>>>>>>>> classic group's `--members --verbose` as well, specifically the >>>>>>>>>>>> "ASSIGNMENT" column to include the topic name? >>>>>>>>>>>> >>>>>>>>>>>> Thanks! >>>>>>>>>>>> >>>>>>>>>>>> On 2024/11/21 14:33:37 "Lianet M." wrote: >>>>>>>>>>>>> Thanks for the updates PoAn! >>>>>>>>>>>>> >>>>>>>>>>>>> LM6. Just a nit, under the --describe --state --verbose the >>>> header >>>>>>>>> is >>>>>>>>>>> fine >>>>>>>>>>>>> but the example is still missing the --state argument. >>>>>>>>>>>>> >>>>>>>>>>>>> LM7. Under the Proposed changes for kafka-share-groups.sh, should >>>>>> we >>>>>>>>>>>>> clearly mention that the KIP adds a new --verbose option? I think >>>>>>>>> it's >>>>>>>>>>>>> confusing because it's presented as if the option already exists >>>>>> and >>>>>>>>>>> we're >>>>>>>>>>>>> only changing the output (which is the case for >>>>>>>>> kafka-consumer-groups >>>>>>>>>>> but >>>>>>>>>>>>> not for kafka-share-groups) >>>>>>>>>>>>> >>>>>>>>>>>>> That's all on my side. Thanks! >>>>>>>>>>>>> >>>>>>>>>>>>> Lianet >>>>>>>>>>>>> >>>>>>>>>>>>> On Wed, Nov 20, 2024 at 11:12 PM PoAn Yang <yangp...@gmail.com> >>>>>>>>>> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> Hi Lianet / Jeff, >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks for review and suggestions. >>>>>>>>>>>>>> >>>>>>>>>>>>>> LM4: At group level, the protocol field is from >>>>>>>>>>> ModernGroup#protocolType. >>>>>>>>>>>>>> It’s a string. >>>>>>>>>>>>>> The value is defined in different places like >>>>>>>>>> ShareGroup#PROTOCOL_TYPE >>>>>>>>>>> and >>>>>>>>>>>>>> ConsumerProtocol#PROTOCOL_TYPE. >>>>>>>>>>>>>> In KIP-1043 < >>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>> >>>>>> >>>> https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=305171038#KIP1043:Administrationofgroups-kafka-groups.sh >>>>>>>>>>>> , >>>>>>>>>>>>>> the kafka-groups.sh also shows protocol like “classic” / >>>>>>>>> “consumer” / >>>>>>>>>>>>>> “share”. >>>>>>>>>>>>>> I agree it’s better to use a type like GroupProtocol enum, but I >>>>>>>>>> would >>>>>>>>>>>>>> like to align the format with kafka-groups.sh. >>>>>>>>>>>>>> How about we use another Jira to add “SHARE” to GroupProtocol >>>> and >>>>>>>>>>> change >>>>>>>>>>>>>> return type of ModernGroup#protocolType? >>>>>>>>>>>>>> >>>>>>>>>>>>>> LM5 / JK1: Sorry, I misunderstood LM3, so I deleted —state in >>>> the >>>>>>>>>>> title. >>>>>>>>>>>>>> You’re correct. I would like to use `—describe —state —verbose` >>>>>> to >>>>>>>>>> show >>>>>>>>>>>>>> group level information. >>>>>>>>>>>>>> For `—describe —verbose`, it will show output as same as >>>>>> `—describe >>>>>>>>>>>>>> —offsets —verbose`, >>>>>>>>>>>>>> because `—describe` also shows output as same as `—describe >>>>>>>>>> —offsets`. >>>>>>>>>>>>>> >>>>>>>>>>>>>> JK2: Yes, I only use consumer group in the sample output, but >>>> the >>>>>>>>>>> classic >>>>>>>>>>>>>> group will use the same format as well. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>> PoAn >>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Nov 21, 2024, at 8:28 AM, Jeff Kim <jeffkb...@apache.org> >>>>>>>>> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Hi PoAn, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Thanks for the KIP. I have some questions: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> JK1: (Realized this is similar to LM5) On `--describe >>>> --verbose` >>>>>>>>>>>>>> proposed changes - doesn't `--describe $group` default to >>>>>> printing >>>>>>>>>> the >>>>>>>>>>>>>> offsets? Perhaps you're referring to the `--state` argument? >>>>>> Also, >>>>>>>>>>> would >>>>>>>>>>>>>> that mean the default `--describe $group --verbose` command >>>> would >>>>>>>>> not >>>>>>>>>>> print >>>>>>>>>>>>>> the added field to `--offsets verbose` (leader-epoch) or would >>>>>> it? >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> JK2: Looking at ConsumerGroupCommand.java, the existing >>>>>>>>> "ASSIGNMENT" >>>>>>>>>>>>>> column under `--members --verbose` does group the topic >>>>>> partitions >>>>>>>>> by >>>>>>>>>>> topic >>>>>>>>>>>>>> but does not prefix the grouping with the topic name like you're >>>>>>>>>>> proposal: >>>>>>>>>>>>>> "my_topic:0,1;new_topic:0,1". Should we do apply the same format >>>>>>>>> for >>>>>>>>>>> the >>>>>>>>>>>>>> classic group as well? >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On 2024/11/20 21:32:41 "Lianet M." wrote: >>>>>>>>>>>>>>>> Hello PoAn, just of couple more minor comments: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> LM4. Regarding the new “protocol” field added to >>>>>>>>> MemberDescription. >>>>>>>>>>>>>> Should >>>>>>>>>>>>>>>> we consider reusing the existing GroupProtocol enum instead of >>>>>>>>>>> String? >>>>>>>>>>>>>>>> (It’s the one we use from the consumer side to refer to the >>>>>>>>>> protocol >>>>>>>>>>> in >>>>>>>>>>>>>>>> use, just missing Share I notice). >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> LM5. Regarding the change to the output for >>>>>>>>> kafka-consumer-groups, >>>>>>>>>>> the >>>>>>>>>>>>>>>> command shown does not include the —state option, but the >>>>>> output >>>>>>>>>>> shows >>>>>>>>>>>>>>>> state info (state, #members, epochs). I would guess that we >>>>>> want >>>>>>>>> to >>>>>>>>>>>>>> modify >>>>>>>>>>>>>>>> the output only when we describe a group with the —state >>>>>> —verbose >>>>>>>>>>>>>> option, >>>>>>>>>>>>>>>> is my understanding right? If my understanding is right we’re >>>>>>>>> just >>>>>>>>>>>>>> missing >>>>>>>>>>>>>>>> adding the —state in the example, and the KIP does not >>>>>> introduce >>>>>>>>>> any >>>>>>>>>>>>>>>> changes to the —describe —verbose option. (If not, it would >>>>>> mean >>>>>>>>> a >>>>>>>>>>>>>> bigger >>>>>>>>>>>>>>>> change to the output of —describe —verbose which I expect is >>>>>> not >>>>>>>>>> the >>>>>>>>>>>>>>>> intention?) >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Thanks! >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Lianet >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On Wed, Nov 20, 2024 at 2:12 AM PoAn Yang <yangp...@gmail.com >>>>> >>>>>>>>>>> wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Hi Chia-Ping, >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Thanks for the review and suggestions. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> CI0: Thanks for the reminder. Update validVersions in >>>>>>>>>>>>>>>>> ConsumerGroupDescribeRequest to 0-1. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> CI1: Yes, I use `ConsumerGroupMember#useClassicProtocol` to >>>>>>>>> check >>>>>>>>>>>>>> whether >>>>>>>>>>>>>>>>> a member in consumer group uses “classic” or “consumer” >>>>>>>>> protocol. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> CI2: Yes, a member in share group always uses “share” >>>>>> protocol. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> CI3: Add a table to show meaning of “classic”, “consumer”, >>>> and >>>>>>>>>>> “share” >>>>>>>>>>>>>>>>> protocol. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> BTW, the vote thread is in >>>>>>>>>>>>>>>>> >>>>>>>>> https://lists.apache.org/thread/rb25tf75tzf4c7jqqldlo5jh9w8chsq6. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>> PoAn >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> On Nov 20, 2024, at 11:46 AM, Chia-Ping Tsai < >>>>>>>>>> chia7...@apache.org> >>>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> hi PoAn >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> CI0: We have to bump the version of >>>>>>>>> ConsumerGroupDescribeRequest >>>>>>>>>>> as >>>>>>>>>>>>>>>>> well, so server can distinguish the new and old behavior. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> CI1: the type of new filed is string, so I guess you plan to >>>>>>>>> use >>>>>>>>>>>>>>>>> `ConsumerGroupMember#useClassicProtocol` [0] flag to return >>>>>>>>> either >>>>>>>>>>>>>>>>> "classic" or "consumer", right? >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> CI2: `MemberDescription` is used by `ShareGroupDescription` >>>>>>>>> too, >>>>>>>>>> so >>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>> new filed protocol in shared group is always "shared", right? >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> CI3: Could you consider adding a table to show the value of >>>>>> the >>>>>>>>>>>>>> protocol >>>>>>>>>>>>>>>>> field in each case? Andrew has a beautiful table in KIP-1043 >>>>>>>>> that >>>>>>>>>>>>>> lists all >>>>>>>>>>>>>>>>> possible protocol names. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> [0] >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>> >>>>>> >>>> https://github.com/apache/kafka/blob/441a6d0b790f4a17b454caeea7588a6b90fbd9db/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/modern/consumer/ConsumerGroupMember.java#L454 >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Best, >>>>>>>>>>>>>>>>>> Chia-Ping >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> On 2024/11/19 15:45:16 PoAn Yang wrote: >>>>>>>>>>>>>>>>>>> Hi David, >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Thanks for the reminder. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> DJ4: Add related content to the KIP. >>>>>>>>>>>>>>>>>>> Bump validVersions in ConsumerGroupDescribeResponse to >>>>>> “0-1”. >>>>>>>>>>>>>>>>>>> Add a new field “Protocol” to >>>> ConsumerGroupDescribeResponse. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>>>> PoAn >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> On Nov 19, 2024, at 3:57 PM, David Jacot >>>>>>>>>>>>>> <dja...@confluent.io.INVALID> >>>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Hi PoAn, >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> DJ4: Could you please also include the required changes to >>>>>>>>> the >>>>>>>>>>>>>>>>>>>> ConsumerGroupDescribed API in the public interface >>>> section? >>>>>>>>> We >>>>>>>>>>>>>>>>> basically >>>>>>>>>>>>>>>>>>>> need to bump the version, add the new field, etc. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>>>>> David >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> On Mon, Nov 18, 2024 at 5:40 AM PoAn Yang < >>>>>>>>> yangp...@gmail.com> >>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> Hi David, >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> DJ4: Add a new field protocol to MemberDescription, >>>>>>>>>>>>>>>>>>>>> so the command line tool can show protocol information >>>>>> when >>>>>>>>>>> users >>>>>>>>>>>>>>>>> describe >>>>>>>>>>>>>>>>>>>>> members. >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> If there is no further suggestion, I will start a vote >>>>>>>>> thread >>>>>>>>>>>>>> today. >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>>>>>> PoAn >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> On Nov 15, 2024, at 11:50 PM, David Jacot >>>>>>>>>>>>>>>>> <dja...@confluent.io.INVALID> >>>>>>>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> Hi, >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> DJ2: Using "-" sounds good to me. >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> DJ3: That seems reasonable to me. >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> DJ4: Why not add it right now? I don't want to change >>>> the >>>>>>>>>>> output >>>>>>>>>>>>>> of >>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>> tool too many times. >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> Best, >>>>>>>>>>>>>>>>>>>>>> David >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> On Fri, Nov 15, 2024 at 3:23 PM PoAn Yang < >>>>>>>>>> yangp...@gmail.com> >>>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> Hi David / Andrew, >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> Thanks for review. Thanks Andrew for picking up >>>>>>>>>>>>>>>>> kafka-share-groups.sh >>>>>>>>>>>>>>>>>>>>>>> implementation. >>>>>>>>>>>>>>>>>>>>>>> I will handle kafka-consumer-groups.sh. >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> DJ3: After discussing with @Chia-Ping Tsai, we think >>>>>> that >>>>>>>>>>> using >>>>>>>>>>>>>> new >>>>>>>>>>>>>>>>>>>>> format >>>>>>>>>>>>>>>>>>>>>>> is more clear. >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> The new format will be like >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>> >>>>>> >>>> <topic-name1>:<partition-id1>,<partition-id2>;<topic-name2>:<partition-id1>,<partition-id2> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> Using colon(:) to concat topic name and partition IDs. >>>>>>>>>>>>>>>>>>>>>>> Using comma(,) to concat partition IDs within same >>>> topic >>>>>>>>>> name. >>>>>>>>>>>>>>>>>>>>>>> Using semicolon(;) to concat topic strings. >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> AS3: Fix it with kafka-share-groups.sh. Thanks. >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> If there is no further suggestion, I will start a vote >>>>>>>>>> thread >>>>>>>>>>>>>> next >>>>>>>>>>>>>>>>>>>>> Monday. >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>>>>>>>> PoAn >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> On Nov 14, 2024, at 9:05 PM, Andrew Schofield < >>>>>>>>>>>>>>>>>>>>>>> andrew_schofield_j...@outlook.com> wrote: >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> Hi PoAn, >>>>>>>>>>>>>>>>>>>>>>>> DJ2: I was just going to comment that "-" would be a >>>>>> more >>>>>>>>>>>>>>>>> appropriate >>>>>>>>>>>>>>>>>>>>>>> missing value, but >>>>>>>>>>>>>>>>>>>>>>>> you got there first. >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> AS3: The examples for kafka-share-groups.sh include >>>>>>>>>>>>>>>>>>>>>>> kafka-consumer-groups.sh in the >>>>>>>>>>>>>>>>>>>>>>>> command line. >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> If this is accepted in time, I'm happy to pick up the >>>>>>>>>>>>>>>>> implementation of >>>>>>>>>>>>>>>>>>>>>>> the share groups >>>>>>>>>>>>>>>>>>>>>>>> part of this if it helps. >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>>>>>>>>> Andrew >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> ________________________________________ >>>>>>>>>>>>>>>>>>>>>>>> From: Frank Yang <yangp...@gmail.com> >>>>>>>>>>>>>>>>>>>>>>>> Sent: 14 November 2024 10:48 >>>>>>>>>>>>>>>>>>>>>>>> To: dev@kafka.apache.org <dev@kafka.apache.org> >>>>>>>>>>>>>>>>>>>>>>>> Subject: Re: [DISCUSS] KIP-1099: Extend >>>>>>>>>> kafka-consumer-groups >>>>>>>>>>>>>>>>> command >>>>>>>>>>>>>>>>>>>>>>> line tool to support new consumer group >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> Hi David, >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> Thanks for the review and suggestion! I would like to >>>>>> get >>>>>>>>>>> this >>>>>>>>>>>>>> in >>>>>>>>>>>>>>>>> AK >>>>>>>>>>>>>>>>>>>>> 4.0 >>>>>>>>>>>>>>>>>>>>>>> as well. I will do my best. >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> DJ1: Update KIP to put GROUP-EPOCH and >>>>>>>>>>> TARGET-ASSIGNMENT-EPOCH >>>>>>>>>>>>>>>>> before >>>>>>>>>>>>>>>>>>>>>>> #MEMBERS. >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> DJ2: I prefer to follow current missing column value >>>>>> “-“. >>>>>>>>>>>>>>>>> (reference < >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>> >>>>>> >>>> https://github.com/apache/kafka/blob/18199028a672fd973ac37bf26316994babc2a6da/tools/src/main/java/org/apache/kafka/tools/consumer/group/ConsumerGroupCommand.java#L92 >>>>>>>>>>>>>>>>>>>>>>>> ) >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> DJ3: Update KIP to use CURRENT-EPOCH >>>> CURRENT-ASSIGNMENT >>>>>>>>>>>>>>>>> TARGET-EPOCH >>>>>>>>>>>>>>>>>>>>>>> TARGET-ASSIGNMENT. >>>>>>>>>>>>>>>>>>>>>>>> Remove GROUP-EPOCH. >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> For assignment value, it follows current output >>>>>>>>> (reference >>>>>>>>>> < >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>> >>>>>> >>>> https://github.com/apache/kafka/blob/18199028a672fd973ac37bf26316994babc2a6da/tools/src/main/java/org/apache/kafka/tools/consumer/group/ConsumerGroupCommand.java#L413-L418 >>>>>>>>>>>>>>>>>>>>>> ). >>>>>>>>>>>>>>>>>>>>>>> I think the form of `topicid-partitionid` is more >>>> clear. >>>>>>>>>>>>>>>>>>>>>>>> If we would like to use this form, I will update both >>>>>>>>>> output >>>>>>>>>>> in >>>>>>>>>>>>>>>>>>>>>>> kafka-consumer-groups.sh and kafka-share-groups.sh. >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> DJ4: It looks like DescribeGroupsResponseData only has >>>>>>>>>>> protocol >>>>>>>>>>>>>>>>> type at >>>>>>>>>>>>>>>>>>>>>>> group level. >>>>>>>>>>>>>>>>>>>>>>>> Both DescribeGroupsResponseData and >>>>>>>>>>>>>>>>> ConsumerGroupDescribeResponseData >>>>>>>>>>>>>>>>>>>>>>> don’t have protocol at member level. >>>>>>>>>>>>>>>>>>>>>>>> Could we use a followup to add it? >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> DJ5: Update KIP to put LEADER-EPOCH before >>>>>>>>> CURRENT-OFFSET. >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>>>>>>>>> PoAn >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> On Nov 14, 2024, at 3:43 PM, David Jacot >>>>>>>>>>>>>>>>> <dja...@confluent.io.INVALID >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> Hi PoAn, >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> Thanks for the KIP! I have a few minor >>>>>>>>>> comments/suggestions: >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> DJ1: In the output of `--describe --verbose`, I would >>>>>>>>>>> suggest >>>>>>>>>>>>>>>>> putting >>>>>>>>>>>>>>>>>>>>>>>>> `GROUP-EPOCH` and `TARGET-ASSIGNMENT-EPOCH` before >>>>>>>>>>> `#MEMBERS`. >>>>>>>>>>>>>>>>>>>>>>>>> DJ2: Continuing on the above, I assume that we will >>>>>>>>> print >>>>>>>>>>> out >>>>>>>>>>>>>> N/A >>>>>>>>>>>>>>>>> for >>>>>>>>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>>>> fields not supported by classic groups. Is this >>>>>> correct? >>>>>>>>>>>>>>>>>>>>>>>>> DJ3: In the output of `--describe --members >>>>>> --verbose`, >>>>>>>>> I >>>>>>>>>>>>>> wonder >>>>>>>>>>>>>>>>> if we >>>>>>>>>>>>>>>>>>>>>>>>> should use the following order and terms: >>>>>> CURRENT-EPOCH >>>>>>>>>>>>>>>>>>>>>>> CURRENT-ASSIGNMENT >>>>>>>>>>>>>>>>>>>>>>>>> TARGET-EPOCH TARGET-ASSIGNMENT . I would remove the >>>>>>>>>>> GROUP-EPOCH >>>>>>>>>>>>>>>>>>>>> because >>>>>>>>>>>>>>>>>>>>>>> it >>>>>>>>>>>>>>>>>>>>>>>>> is already in the group description. The value `(0)` >>>>>>>>> used >>>>>>>>>>> for >>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>>>> assignment is incorrect. Here I suppose that we will >>>>>>>>> print >>>>>>>>>>> out >>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>> list >>>>>>>>>>>>>>>>>>>>>>> of >>>>>>>>>>>>>>>>>>>>>>>>> partitions in the form of `topicid-partitionid`. >>>>>>>>>>>>>>>>>>>>>>>>> DJ4: Continuing on the above, I wonder if we should >>>>>> also >>>>>>>>>> add >>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>> protocol >>>>>>>>>>>>>>>>>>>>>>>>> used `classic` or `consumer`. For context, it is >>>>>>>>> possible >>>>>>>>>> to >>>>>>>>>>>>>> have >>>>>>>>>>>>>>>>>>>>>>> `classic` >>>>>>>>>>>>>>>>>>>>>>>>> members and `consumer` members in a `consumer` group >>>>>>>>>> during >>>>>>>>>>> an >>>>>>>>>>>>>>>>> online >>>>>>>>>>>>>>>>>>>>>>>>> upgrade from the classic protocol to the consumer >>>>>>>>>> protocol. >>>>>>>>>>>>>> Having >>>>>>>>>>>>>>>>>>>>> this >>>>>>>>>>>>>>>>>>>>>>>>> information may be handy for administrators. What do >>>>>> you >>>>>>>>>>> think? >>>>>>>>>>>>>>>>>>>>>>>>> DJ5: In the output of `--describe --offsets >>>>>> --verbose`, >>>>>>>>> I >>>>>>>>>>> would >>>>>>>>>>>>>>>>>>>>> suggest >>>>>>>>>>>>>>>>>>>>>>>>> putting `LEADER-EPOCH` closer to `CURRENT-OFFSET`. >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> It would be great if we could get this one in AK 4.0 >>>>>> as >>>>>>>>> it >>>>>>>>>>>>>>>>> changes the >>>>>>>>>>>>>>>>>>>>>>>>> output of the command. >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>>>>>>>>>> DJ >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> On Fri, Nov 1, 2024 at 7:40 AM Frank Yang < >>>>>>>>>>> yangp...@gmail.com> >>>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> Hi Sean / Andrew / Lianet, >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> Thanks for all your review and suggestions. >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> AS1, LM1, LM4: Change to add KIP-848 information >>>> when >>>>>>>>>> users >>>>>>>>>>>>>> give >>>>>>>>>>>>>>>>>>>>>>> —verbose >>>>>>>>>>>>>>>>>>>>>>>>>> option. >>>>>>>>>>>>>>>>>>>>>>>>>> —describe —verbose: shows group epoch and target >>>>>>>>>> assignment >>>>>>>>>>>>>>>>> epoch. >>>>>>>>>>>>>>>>>>>>>>>>>> —describe —members —verbose: shows above >>>> information, >>>>>>>>>>> member >>>>>>>>>>>>>>>>> epoch, >>>>>>>>>>>>>>>>>>>>> and >>>>>>>>>>>>>>>>>>>>>>>>>> target assignment. >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> AS2: Change to use MEMBER-EPOCH to align with >>>> KIP-848 >>>>>>>>>>>>>> definition. >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> LM2: For classic group, it doesn’t have epoch, so I >>>>>> use >>>>>>>>>>>>>> Optional >>>>>>>>>>>>>>>>>>>>>>> fields in >>>>>>>>>>>>>>>>>>>>>>>>>> ConsumerGroupDescription. >>>>>>>>>>>>>>>>>>>>>>>>>> For share group, it relies on KIP-848. It must have >>>>>>>>>> epoch, >>>>>>>>>>> so >>>>>>>>>>>>>> I >>>>>>>>>>>>>>>>> use >>>>>>>>>>>>>>>>>>>>> int >>>>>>>>>>>>>>>>>>>>>>>>>> fields in ShareGroupDescription. >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> LM3: Remove —state change. We can get group level >>>>>>>>>>> information >>>>>>>>>>>>>> by >>>>>>>>>>>>>>>>>>>>>>> —describe >>>>>>>>>>>>>>>>>>>>>>>>>> —verbose. >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> SQ1: Add LEADER-EPOCH when users give —describe >>>>>>>>> —offsets >>>>>>>>>>>>>>>>> —verbose. >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> Thanks. >>>>>>>>>>>>>>>>>>>>>>>>>> PoAn >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> On Nov 1, 2024, at 5:08 AM, Lianet M. < >>>>>>>>>> liane...@gmail.com >>>>>>>>>>>> >>>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> Hello Frank, thanks for the KIP! A few comments: >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> LM1. I strongly agree with Andrew's suggestion of >>>>>>>>> moving >>>>>>>>>>> this >>>>>>>>>>>>>>>>> into a >>>>>>>>>>>>>>>>>>>>>>>>>>> --verbose option. I expect someone would only >>>>>> attempt >>>>>>>>> to >>>>>>>>>>> make >>>>>>>>>>>>>>>>> sense >>>>>>>>>>>>>>>>>>>>> of >>>>>>>>>>>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>>>>>> epochs while debugging an issue, not while trying >>>> to >>>>>>>>>> view >>>>>>>>>>> the >>>>>>>>>>>>>>>>> group >>>>>>>>>>>>>>>>>>>>> or >>>>>>>>>>>>>>>>>>>>>>>>>>> member's info. (Also member-epoch makes more sense >>>>>> to >>>>>>>>>> me, >>>>>>>>>>>>>> even >>>>>>>>>>>>>>>>> more >>>>>>>>>>>>>>>>>>>>>>> if we >>>>>>>>>>>>>>>>>>>>>>>>>>> end up agreeing in a --verbose). Related to both >>>>>>>>> issues, >>>>>>>>>>> my >>>>>>>>>>>>>>>>> take is >>>>>>>>>>>>>>>>>>>>>>> that >>>>>>>>>>>>>>>>>>>>>>>>>>> whoever is close to the protocol will expect >>>>>>>>>> member-epoch, >>>>>>>>>>>>>>>>> whoever >>>>>>>>>>>>>>>>>>>>> is >>>>>>>>>>>>>>>>>>>>>>> not >>>>>>>>>>>>>>>>>>>>>>>>>>> will probably won't even need to see the epochs at >>>>>>>>> all. >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> LM2. Why are the epochs defined as Optional (don't >>>>>> we >>>>>>>>>>> expect >>>>>>>>>>>>>> to >>>>>>>>>>>>>>>>>>>>> always >>>>>>>>>>>>>>>>>>>>>>>>>> have >>>>>>>>>>>>>>>>>>>>>>>>>>> them? with 0 initially, defined on the broker side >>>>>> for >>>>>>>>>> the >>>>>>>>>>>>>> group >>>>>>>>>>>>>>>>>>>>> ones, >>>>>>>>>>>>>>>>>>>>>>>>>> and >>>>>>>>>>>>>>>>>>>>>>>>>>> client side for the member) >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> LM3. Why is the KIP including the –state option in >>>>>> the >>>>>>>>>>>>>> proposed >>>>>>>>>>>>>>>>>>>>>>> changes? >>>>>>>>>>>>>>>>>>>>>>>>>> ( >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>> >>>>>> >>>> https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=327977411#KIP1099:Extendkafkaconsumergroupscommandlinetooltosupportnewconsumergroup---state >>>>>>>>>>>>>>>>>>>>>>>>>>> ). >>>>>>>>>>>>>>>>>>>>>>>>>>> I get that the output would change in that example, >>>>>>>>> but >>>>>>>>>>> it’s >>>>>>>>>>>>>> not >>>>>>>>>>>>>>>>>>>>>>> because >>>>>>>>>>>>>>>>>>>>>>>>>> of >>>>>>>>>>>>>>>>>>>>>>>>>>> any change to the –state option itself. It's >>>> because >>>>>>>>> of >>>>>>>>>>> the >>>>>>>>>>>>>>>>> change >>>>>>>>>>>>>>>>>>>>>>>>>> proposed >>>>>>>>>>>>>>>>>>>>>>>>>>> to the –described (required with the --state), and >>>>>> the >>>>>>>>>>>>>> changes >>>>>>>>>>>>>>>>> to >>>>>>>>>>>>>>>>>>>>>>>>>>> --describe are already explained above (seems >>>>>>>>> confusing, >>>>>>>>>>> got >>>>>>>>>>>>>> me >>>>>>>>>>>>>>>>>>>>>>> looking >>>>>>>>>>>>>>>>>>>>>>>>>> for >>>>>>>>>>>>>>>>>>>>>>>>>>> a change to the state filter which seemed >>>>>> unrelated). >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> LM4. Group epoch and target assignment epoch are >>>>>>>>>>> conceptually >>>>>>>>>>>>>>>>> at the >>>>>>>>>>>>>>>>>>>>>>>>>> group >>>>>>>>>>>>>>>>>>>>>>>>>>> level. vs member epoch that lands at a member >>>> level. >>>>>>>>> So >>>>>>>>>>>>>> wonder >>>>>>>>>>>>>>>>> if we >>>>>>>>>>>>>>>>>>>>>>>>>> should >>>>>>>>>>>>>>>>>>>>>>>>>>> show them accordingly (ex. using the --verbose >>>>>> option) >>>>>>>>>>>>>>>>>>>>>>>>>>> –describe –verbose => shows group epoch and target >>>>>>>>>>> assignment >>>>>>>>>>>>>>>>> epoch >>>>>>>>>>>>>>>>>>>>>>>>>>> –describe –members –verbose => shows member >>>>>>>>>> epoch >>>>>>>>>>>>>>>>> (along >>>>>>>>>>>>>>>>>>>>>>>>>>> with group epoch and target assignment epoch) >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> Thanks! >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> Lianet >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Oct 31, 2024 at 7:30 AM Andrew Schofield < >>>>>>>>>>>>>>>>>>>>>>>>>>> andrew_schofield_j...@outlook.com> wrote: >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> Hi PoAn, >>>>>>>>>>>>>>>>>>>>>>>>>>>> Thanks for the KIP. I have a few comments. >>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> AS1: It seems to me that these new additions are >>>>>> most >>>>>>>>>>>>>> useful to >>>>>>>>>>>>>>>>>>>>>>> people >>>>>>>>>>>>>>>>>>>>>>>>>>>> trying to understand >>>>>>>>>>>>>>>>>>>>>>>>>>>> the progress of rebalancing in quite some detail. >>>>>> The >>>>>>>>>>>>>>>>> information >>>>>>>>>>>>>>>>>>>>> is >>>>>>>>>>>>>>>>>>>>>>>>>>>> really not understandable >>>>>>>>>>>>>>>>>>>>>>>>>>>> for most users who do not have deep knowledge of >>>>>>>>>>>>>> KIP-848/932. >>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> As a result, I suggest for kafka-share-groups.sh >>>>>> that >>>>>>>>>> you >>>>>>>>>>>>>> add a >>>>>>>>>>>>>>>>>>>>>>>>>> --members >>>>>>>>>>>>>>>>>>>>>>>>>>>> --verbose option >>>>>>>>>>>>>>>>>>>>>>>>>>>> and only include the new information in the output >>>>>>>>> for >>>>>>>>>>> that >>>>>>>>>>>>>>>>> option, >>>>>>>>>>>>>>>>>>>>>>>>>> rather >>>>>>>>>>>>>>>>>>>>>>>>>>>> than changing the >>>>>>>>>>>>>>>>>>>>>>>>>>>> non-verbose --members output. >>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> I also make a similar suggestion for >>>>>>>>>>>>>> kafka-consumer-groups.sh >>>>>>>>>>>>>>>>>>>>>>> --members >>>>>>>>>>>>>>>>>>>>>>>>>>>> and only add the >>>>>>>>>>>>>>>>>>>>>>>>>>>> new information for the --verbose output. >>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> AS2: I strongly suggest that you use MEMBER-EPOCH >>>>>>>>>>> instead of >>>>>>>>>>>>>>>>>>>>>>>>>>>> CONSUMER-EPOCH. >>>>>>>>>>>>>>>>>>>>>>>>>>>> I think it's more confusing not following the >>>>>>>>>>> terminology of >>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>> KIPs. >>>>>>>>>>>>>>>>>>>>>>>>>> For >>>>>>>>>>>>>>>>>>>>>>>>>>>> one thing, >>>>>>>>>>>>>>>>>>>>>>>>>>>> we already have "member" in the admin client such >>>>>> as >>>>>>>>>>>>>>>>>>>>>>> MemberDescription. >>>>>>>>>>>>>>>>>>>>>>>>>>>> It's not a >>>>>>>>>>>>>>>>>>>>>>>>>>>> new term. >>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>>>>>>>>>>>>> Andrew >>>>>>>>>>>>>>>>>>>>>>>>>>>> ________________________________________ >>>>>>>>>>>>>>>>>>>>>>>>>>>> From: PoAn Yang <pay...@apache.org> >>>>>>>>>>>>>>>>>>>>>>>>>>>> Sent: 25 October 2024 13:55 >>>>>>>>>>>>>>>>>>>>>>>>>>>> To: dev@kafka.apache.org <dev@kafka.apache.org> >>>>>>>>>>>>>>>>>>>>>>>>>>>> Subject: Re: [DISCUSS] KIP-1099: Extend >>>>>>>>>>>>>> kafka-consumer-groups >>>>>>>>>>>>>>>>>>>>> command >>>>>>>>>>>>>>>>>>>>>>>>>> line >>>>>>>>>>>>>>>>>>>>>>>>>>>> tool to support new consumer group >>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> Hi Lucas, >>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> Thanks for the review! >>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> 1) Yes, I add related change for >>>>>>>>> kafka-share-groups.sh >>>>>>>>>> to >>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>> KIP. >>>>>>>>>>>>>>>>>>>>>>> Could >>>>>>>>>>>>>>>>>>>>>>>>>>>> you take a look? Thanks for the suggestion. >>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> 2) We use CONSUMER-ID as member ID. If we use >>>>>>>>>>> MEMBER-EPOCH >>>>>>>>>>>>>>>>> here, >>>>>>>>>>>>>>>>>>>>>>> users >>>>>>>>>>>>>>>>>>>>>>>>>> may >>>>>>>>>>>>>>>>>>>>>>>>>>>> confuse what is different between CONSUMER and >>>>>>>>> MEMBER. >>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>>>>>>>>>>>>> PoAn >>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> On 2024/10/23 13:28:17 Lucas Brutschy wrote: >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hi Frank, >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> thanks for the KIP! >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> 1) For consistency, should we do the same for >>>>>>>>>>>>>>>>>>>>>>>>>>>>> kafka-share-groups.sh, ShareGroupDescription, >>>>>> etc. ? >>>>>>>>>>> Even >>>>>>>>>>>>>> if >>>>>>>>>>>>>>>>> we do >>>>>>>>>>>>>>>>>>>>>>> not >>>>>>>>>>>>>>>>>>>>>>>>>>>>> implement it right now if the share group >>>>>>>>>> implementation >>>>>>>>>>>>>> may >>>>>>>>>>>>>>>>> still >>>>>>>>>>>>>>>>>>>>>>> be >>>>>>>>>>>>>>>>>>>>>>>>>>>>> incomplete, it may make sense to include it in >>>> the >>>>>>>>>> KIP. >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2) Why call it CONSUMER-EPOCH, not MEMBER-EPOCH? >>>>>>>>> That >>>>>>>>>>> would >>>>>>>>>>>>>>>>> seem >>>>>>>>>>>>>>>>>>>>>>> more >>>>>>>>>>>>>>>>>>>>>>>>>>>>> consistent. >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Cheers, >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Lucas >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Wed, Oct 23, 2024 at 2:41 PM Frank Yang < >>>>>>>>>>>>>>>>> yangp...@gmail.com> >>>>>>>>>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hi all, >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> I would like to kick off the discussion of >>>>>>>>> KIP-1099. >>>>>>>>>>> This >>>>>>>>>>>>>> KIP >>>>>>>>>>>>>>>>>>>>>>> enhances >>>>>>>>>>>>>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> kafka-consumer-groups tools to include state >>>>>> which >>>>>>>>> is >>>>>>>>>>>>>>>>> introduced >>>>>>>>>>>>>>>>>>>>> by >>>>>>>>>>>>>>>>>>>>>>>>>>>> KIP-848. >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> KIP-1099: Extend kafka-consumer-groups command >>>>>> line >>>>>>>>>>> tool >>>>>>>>>>>>>> to >>>>>>>>>>>>>>>>>>>>> support >>>>>>>>>>>>>>>>>>>>>>>>>> new >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> consumer group - Apache Kafka - Apache Software >>>>>>>>>>> Foundation >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> < >>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>> >>>>>> >>>> https://cwiki.apache.org/confluence/display/KAFKA/KIP-1099%3A+Extend+kafka-consumer-groups+command+line+tool+to+support+new+consumer+group >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> cwiki.apache.org >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> < >>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>> >>>>>> >>>> https://cwiki.apache.org/confluence/display/KAFKA/KIP-1099%3A+Extend+kafka-consumer-groups+command+line+tool+to+support+new+consumer+group >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> [image: favicon.ico] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> < >>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>> >>>>>> >>>> https://cwiki.apache.org/confluence/display/KAFKA/KIP-1099%3A+Extend+kafka-consumer-groups+command+line+tool+to+support+new+consumer+group >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> < >>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>> >>>>>> >>>> https://cwiki.apache.org/confluence/display/KAFKA/KIP-1099%3A+Extend+kafka-consumer-groups+command+line+tool+to+support+new+consumer+group >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Thank you, >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> PoAn >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>> >>>> >>>> >