Hi David, If you don't have other comments, would you vote for the KIP?
Thank you. Luke On Tue, Feb 22, 2022 at 3:13 PM David Jacot <david.ja...@gmail.com> wrote: > Thanks, Luke! > > Le mar. 22 févr. 2022 à 08:02, Luke Chen <show...@gmail.com> a écrit : > > > Hi David, > > > > Thanks for the comment. > > I've updated the KIP, to add the method will be added into `Subscription` > > class: > > > > // new added, the generationId getter > > public int generationId() { > > return generationId; > > } > > > > Thank you. > > Luke > > > > On Mon, Feb 21, 2022 at 5:24 PM David Jacot <dja...@confluent.io.invalid > > > > wrote: > > > > > Hi Luke, > > > > > > I apologize for my late reply. I was out for a while. > > > > > > Coming back to my previous point, could you also > > > spell out the new method(s) that we need to add to > > > the Subscription class? > > > > > > Thanks, > > > David > > > > > > On Mon, Feb 14, 2022 at 6:28 PM Guozhang Wang <wangg...@gmail.com> > > wrote: > > > > > > > > Thanks Luke, no more comments from me, nice work! > > > > > > > > On Mon, Feb 14, 2022 at 5:22 AM Luke Chen <show...@gmail.com> wrote: > > > > > > > > > Hi Guozhang, > > > > > > > > > > Thanks for your comments. I've updated the KIP. > > > > > Here's what I've updated: > > > > > > > > > > * In the motivation section, I've added this paragraph after > > > > > cooperativeStickyAssignor like this: > > > > > > > > > > *On the other hand, `StickyAssignor` is also adding "generation" > > field > > > > > plus the "ownedPartitions" into subscription userData bytes. the > > > difference > > > > > is that the `StickyAssignor`'s user bytes also encode the > prev-owned > > > > > partitions while the `CooperativeStickyAssignor` relies on the > > > prev-owned > > > > > partitions on the subscription protocol directly.* > > > > > > > > > > * In the proposed change section, I've updated the paragraph as: > > > > > > > > > > > > > > > *For built-in CooperativeStickyAssignor, if there are consumers in > > old > > > > > bytecode and some in the new bytecode, it's totally fine, because > the > > > > > subscription data from old consumers will contain \[empty > > > ownedPartitions + > > > > > default generation(-1)] in V0, or \[current ownedPartitions + > default > > > > > generation(-1)] in V1. For V0 case, it's quite simple, because > we'll > > > just > > > > > ignore the info since they are empty. For V1 case, we'll get the > > > > > "ownedPartitions" data, and then decode the "generation" info in > the > > > > > subscription userData bytes. So that we can continue to do > assignment > > > with > > > > > these information.* > > > > > * Also, after the "cooperativeStickyAssignor paragraph, I've also > > > mentioned > > > > > stickyAssignor: > > > > > > > > > > > > > > > *For built-in StickyAssignor, if there are consumers in old > bytecode > > > and > > > > > some in the new bytecode, it's also fine, because the subscription > > data > > > > > from old consumers will contain \[empty ownedPartitions + default > > > > > generation(-1)] in V0, or \[current ownedPartitions + default > > > > > generation(-1)] in V1. For both V0 and V1 case, we'll directly use > > the > > > > > ownedPartition and generation info in the subscription userData > > bytes. > > > * > > > > > > > > > > Please let me know if you have other comments. > > > > > > > > > > Thank you. > > > > > Luke > > > > > > > > > > On Wed, Feb 9, 2022 at 2:57 PM Guozhang Wang <wangg...@gmail.com> > > > wrote: > > > > > > > > > > > Hello Luke, > > > > > > > > > > > > Thanks for the updated KIP, I've taken a look at it and still > LGTM. > > > Just > > > > > a > > > > > > couple minor comments in the wiki: > > > > > > > > > > > > * Both `StickyAssignor` and `CooperativeStickyAssignor` that > > there's > > > > > > already generation is encoded in user-data bytes, the difference > is > > > that > > > > > > the `StickyAssignor`'s user bytes also encode the prev-owned > > > partitions > > > > > > while the `CooperativeStickyAssignor` relies on the prev-owned > > > partitions > > > > > > on the subscription protocol directly. So we can add the > > > `StickyAssignor` > > > > > > in your paragraph talking about `CooperativeStickyAssignor` as > > well. > > > > > > > > > > > > * This sentence: "otherwise, we'll take the ownedPartitions as > > > default > > > > > > generation(-1)." does not read right to me, maybe need to > rephrase > > a > > > bit? > > > > > > > > > > > > > > > > > > Guozhang > > > > > > > > > > > > On Mon, Feb 7, 2022 at 7:36 PM Luke Chen <show...@gmail.com> > > wrote: > > > > > > > > > > > > > Hi David, > > > > > > > > > > > > > > Thanks for your comments. > > > > > > > I've updated the KIP to add changes in Subscription class. > > > > > > > > > > > > > > Thank you. > > > > > > > Luke > > > > > > > > > > > > > > On Fri, Feb 4, 2022 at 11:43 PM David Jacot > > > > > <dja...@confluent.io.invalid > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > Hi Luke, > > > > > > > > > > > > > > > > Thanks for updating the KIP. I just have a minor request. > > > > > > > > Could you fully describe the changes to the Subscription > > > > > > > > public class in the KIP? I think that it would be better than > > > > > > > > just saying that the generation will be added to id. > > > > > > > > > > > > > > > > Otherwise, the KIP LGTM. > > > > > > > > > > > > > > > > Thanks, > > > > > > > > David > > > > > > > > > > > > > > > > On Mon, Nov 29, 2021 at 4:29 AM Luke Chen <show...@gmail.com > > > > > wrote: > > > > > > > > > > > > > > > > > > Hi devs, > > > > > > > > > Welcome to provide feedback. > > > > > > > > > > > > > > > > > > If there are no other comments, I'll start a vote tomorrow. > > > > > > > > > > > > > > > > > > Thank you. > > > > > > > > > Luke > > > > > > > > > > > > > > > > > > > > > > > > > > > On Mon, Nov 22, 2021 at 4:16 PM Luke Chen < > show...@gmail.com > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > Hello David, > > > > > > > > > > > > > > > > > > > > For (3): > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > * I suppose that we could add a `generation` field to the > > > > > > > > JoinGroupRequest > > > > > > > > > > instead to do the fencing that you describe while > handling > > > the > > > > > > > > sentinel in > > > > > > > > > > the assignor directly. If we would add the `generation` > to > > > the > > > > > > > request > > > > > > > > > > itself, would we need the `generation` in the > subscription > > > > > protocol > > > > > > > as > > > > > > > > > > well?* > > > > > > > > > > > > > > > > > > > > On second thought, I think this is not better than adding > > > > > > > `generation` > > > > > > > > > > field in the subscription protocol, because I think we > > don't > > > have > > > > > > to > > > > > > > > do any > > > > > > > > > > generation validation on joinGroup request. The purpose > of > > > > > > > > > > `joinGroupRequest` is to accept any members to join this > > > group, > > > > > > even > > > > > > > > if the > > > > > > > > > > member is new or ever joined or what. As long as we have > > the > > > > > > > > generationId > > > > > > > > > > in the subscription metadata, the consumer lead can > > leverage > > > the > > > > > > info > > > > > > > > to > > > > > > > > > > ignore the old ownedPartitions (or do other handling), > and > > > the > > > > > > > > rebalance > > > > > > > > > > can still complete successfully and correctly. On the > other > > > hand, > > > > > > if > > > > > > > > we did > > > > > > > > > > the generation check on JoinGroupRequest, and return > > > > > > > > `ILLEGAL_GENERATION` > > > > > > > > > > back to consumer, the consumer needs to clear its > > generation > > > info > > > > > > and > > > > > > > > > > rejoin the group to continue the rebalance. It needs more > > > > > > > > request/response > > > > > > > > > > network and slow down the rebalance. > > > > > > > > > > > > > > > > > > > > So I think we should add the `generationId` field into > > > > > Subscription > > > > > > > > > > protocol to achieve what we want. > > > > > > > > > > > > > > > > > > > > Thank you. > > > > > > > > > > Luke > > > > > > > > > > > > > > > > > > > > On Thu, Nov 18, 2021 at 8:51 PM Luke Chen < > > show...@gmail.com > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > >> Hi David, > > > > > > > > > >> Thanks for your feedback. > > > > > > > > > >> > > > > > > > > > >> I've updated the KIP for your comments (1)(2). > > > > > > > > > >> For (3), it's a good point! Yes, we didn't deserialize > the > > > > > > > > subscription > > > > > > > > > >> metadata on broker side, and it's not necessary to add > > > overhead > > > > > on > > > > > > > > broker > > > > > > > > > >> side. And, yes, I think we can fix the original issue by > > > adding > > > > > a > > > > > > > > > >> "generation" field into `JoinGroupRequest` instead, and > > also > > > > > add a > > > > > > > > field > > > > > > > > > >> into `JoinGroupResponse` in `JoinGroupResponseMember` > > field. > > > > > That > > > > > > > > way, the > > > > > > > > > >> broker can identify the old member from > > `JoinGroupRequest`. > > > And > > > > > > the > > > > > > > > > >> assignor can also get the "generation" info via the > > > > > `Subscription` > > > > > > > > instance. > > > > > > > > > >> > > > > > > > > > >> I'll update the KIP to add "generation" field into > > > > > > > `JoinGroupRequest` > > > > > > > > and > > > > > > > > > >> `JoinGroupResponse`, if there is no other options. > > > > > > > > > >> > > > > > > > > > >> Thank you. > > > > > > > > > >> Luke > > > > > > > > > >> > > > > > > > > > >> > > > > > > > > > >> On Tue, Nov 16, 2021 at 12:31 AM David Jacot > > > > > > > > <dja...@confluent.io.invalid> > > > > > > > > > >> wrote: > > > > > > > > > >> > > > > > > > > > >>> Hi Luke, > > > > > > > > > >>> > > > > > > > > > >>> Thanks for the KIP. Overall, I think that the > motivation > > > makes > > > > > > > > sense. I > > > > > > > > > >>> have a couple of comments/questions: > > > > > > > > > >>> > > > > > > > > > >>> 1. In the Public Interfaces section, it would be great > if > > > you > > > > > > could > > > > > > > > put > > > > > > > > > >>> the > > > > > > > > > >>> end state not the current one. > > > > > > > > > >>> > > > > > > > > > >>> 2. Do we need to update the Subscription class to > expose > > > the > > > > > > > > > >>> generation? If so, it would be great to mention it in > the > > > > > Public > > > > > > > > > >>> Interfaces section as well. > > > > > > > > > >>> > > > > > > > > > >>> 3. You mention that the broker will set the generation > if > > > the > > > > > > > > > >>> subscription > > > > > > > > > >>> contains a sentinel value (-1). As of today, the broker > > > does > > > > > not > > > > > > > > parse > > > > > > > > > >>> the subscription so I am not sure how/why we would do > > > this. I > > > > > > > suppose > > > > > > > > > >>> that we could add a `generation` field to the > > > JoinGroupRequest > > > > > > > > instead > > > > > > > > > >>> to do the fencing that you describe while handling the > > > sentinel > > > > > > in > > > > > > > > the > > > > > > > > > >>> assignor directly. If we would add the `generation` to > > the > > > > > > request > > > > > > > > > >>> itself, > > > > > > > > > >>> would we need the `generation` in the subscription > > > protocol as > > > > > > > well? > > > > > > > > > >>> > > > > > > > > > >>> Best, > > > > > > > > > >>> David > > > > > > > > > >>> > > > > > > > > > >>> On Fri, Nov 12, 2021 at 3:31 AM Luke Chen < > > > show...@gmail.com> > > > > > > > wrote: > > > > > > > > > >>> > > > > > > > > > > >>> > Hi all, > > > > > > > > > >>> > > > > > > > > > > >>> > I'd like to start the discussion for KIP-792: Add > > > > > "generation" > > > > > > > > field > > > > > > > > > >>> into > > > > > > > > > >>> > consumer protocol. > > > > > > > > > >>> > > > > > > > > > > >>> > The goal of this KIP is to allow assignor/consumer > > > > > > > > coordinator/group > > > > > > > > > >>> > coordinator to have a way to identify the out-of-date > > > > > > > > > >>> members/assignments. > > > > > > > > > >>> > > > > > > > > > > >>> > Detailed description can be found here: > > > > > > > > > >>> > > > > > > > > > > >>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=191336614 > > > > > > > > > >>> > > > > > > > > > > >>> > Any feedback is welcome. > > > > > > > > > >>> > > > > > > > > > > >>> > Thank you. > > > > > > > > > >>> > Luke > > > > > > > > > >>> > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > -- Guozhang > > > > > > > > > > > > > > > > > > > > > > > -- > > > > -- Guozhang > > > > > >