Hi Jun,

90.1 You're right. That's a miss on my side.
90.2 That makes sense. Relying on
ConsumerGroupTargetAssignmentMetadataValue.AssignmentEpoch should be
enough here.

91. When a client side assignor is used, the assignment is computed
asynchronously. While it is computed for the group at epoch X, the
group may have already advanced to epoch X+1 due to another event
(e.g. new member joined). In this case, we have chosen to install the
assignment computed for epoch X and to trigger a new assignment
computation right away. So if the group topology changes rapidly, the
assignment may lag a bit behind but it will eventually converge. For
context, the alternative would have been to cancel the assignment and
to trigger a new one immediately but this approach is prone to a live
lock. For instance, if a member joins and leaves all the time, there
is a chance that a new assignment is never computed. I have extended
that phrase to be more explicit.

Thanks for the comments.

Best,
David

On Mon, Oct 24, 2022 at 7:28 PM Jun Rao <j...@confluent.io.invalid> wrote:
>
> Hi, David,
>
> Thanks for the updated KIP. A few more comments.
>
> 90. ConsumerGroupTargetAssignmentMemberValue:
> 90.1 Do we need to include MemberId here given that it's in the key already?
> 90.2 Since there is no new record if the new member assignment is the same,
> it seems that AssignmentEpoch doesn't always reflect the correct assignment
> epoch? If so, do we still need this field? Could we just depend
> on ConsumerGroupTargetAssignmentMetadataValue.AssignmentEpoch?
>
> 91. "The AssignmentEpoch corresponds to the group epoch used to compute the
> assignment. It is not necessarily the last one." Could you explain what "It
> is not necessarily the last one." means?
>
> Thanks,
>
> Jun
>
>
> On Mon, Oct 24, 2022 at 7:49 AM Magnus Edenhill <mag...@edenhill.se> wrote:
>
> > Hi, one minor comment on the latest update:
> >
> >
> > Den mån 24 okt. 2022 kl 16:26 skrev David Jacot
> > <dja...@confluent.io.invalid
> > >:
> >
> > > * Jason pointed out that the member id handling is a tad weird. The
> > > group coordinator generates the member id and then trusts the member
> > > when it rejoins the group. This also implies that the client could
> > > directly generate its member id and the group coordinator will accept
> > > it. It seems better to directly let the client generate id instead of
> > > relying on the group coordinator. I have updated the KIP in this
> > > direction. Note that the new APIs still use a string for the member id
> > > in order to remain consistent with the existing APIs.
> > >
> >
> > We had a similar discussion for id generation in KIP-714 and I'd advise
> > against client-side id generation for a couple of reasons:
> >  - it is much more likely for the client side prng to be poorly seeded, or
> > incorrectly implemented, than the server side.
> >    This risks two different consumer instances generating the same id.
> >  - it adds an extra dependency on the client, a uuid library/module, which
> > brings with it the usual plethora
> >    of linking conflicts, package availability issues, etc.
> >  - as for trusting the authenticity of the id; with server-side generation
> > we at least have a (future) possibility for verifying the id, would it ever
> > become an issue.
> >
> >
> > Regards,
> > Magnus
> >

Reply via email to