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
> >>>
> >>

Reply via email to