Hi, team
        I updated the KIP-571 since we took a slightly different implementation 
in the PR https://github.com/apache/kafka/pull/8589, basically:
        In RemoveMembersFromConsumerGroupOptions, leveraging empty members 
rather than introducing a new field to imply the removeAll scenario.
       Please let me know if you have any concerns, thanks a lot!

Feyman    


------------------------------------------------------------------
发件人:feyman2009 <feyman2...@aliyun.com.INVALID>
发送时间:2020年4月13日(星期一) 08:47
收件人:dev <dev@kafka.apache.org>
主 题:回复:回复:回复:回复:回复:回复:回复:[Vote] KIP-571: Add option to force remove members in 
StreamsResetter

Thanks , John and Guochang!
------------------------------------------------------------------
发件人:Guozhang Wang <wangg...@gmail.com>
发送时间:2020年4月11日(星期六) 03:07
收件人:dev <dev@kafka.apache.org>
主 题:Re: 回复:回复:回复:回复:回复:回复:[Vote] KIP-571: Add option to force remove members in 
StreamsResetter

Thanks Feyman,

I've looked at the update that you incorporated from Matthias and that LGTM
too. I'm still +1 :)

Guozhang

On Fri, Apr 10, 2020 at 11:18 AM John Roesler <j...@vvcephei.org> wrote:

> Hey Feyman,
>
> Just to remove any ambiguity, I've been casually following the discussion,
> I've just looked at the KIP document again, and I'm still +1 (binding).
>
> Thanks,
> -John
>
> On Fri, Apr 10, 2020, at 01:44, feyman2009 wrote:
> > Hi, all
> >     KIP-571 has already collected 4 bind +1 (John, Guochang, Bill,
> > Matthias) and 3 non-binding +1(Boyang, Sophie), I will mark it as
> > approved and create a PR shortly.
> >     Thanks!
> >
> > Feyman
> > ------------------------------------------------------------------
> > 发件人:feyman2009 <feyman2...@aliyun.com.INVALID>
> > 发送时间:2020年4月8日(星期三) 14:21
> > 收件人:dev <dev@kafka.apache.org>; Boyang Chen <reluctanthero...@gmail.com>
> > 主 题:回复:回复:回复:回复:回复:回复:[Vote] KIP-571: Add option to force remove
> > members in StreamsResetter
> >
> > Hi Boyang,
> >     Thanks for reminding me of that!
> >     I'm not sure about the convention, I thought it would need to
> > re-collect votes if the KIP has changed~
> >     Let's leave the vote thread here for 2 days, if no objection, I
> > will take it as approved and update the PR accordingly.
> >
> > Thanks!
> > Feyman
> >
> >
> >
> > ------------------------------------------------------------------
> > 发件人:Boyang Chen <reluctanthero...@gmail.com>
> > 发送时间:2020年4月8日(星期三) 12:42
> > 收件人:dev <dev@kafka.apache.org>; feyman2009 <feyman2...@aliyun.com>
> > 主 题:Re: 回复:回复:回复:回复:回复:[Vote] KIP-571: Add option to force remove
> > members in StreamsResetter
> >
> > You should already get enough votes if I'm counting correctly
> > (Guozhang, John, Matthias)
> > On Tue, Apr 7, 2020 at 6:59 PM feyman2009
> > <feyman2...@aliyun.com.invalid> wrote:
> > Hi, Boyang&Matthias
> >      I think Matthias's proposal makes sense, but we can use the admin
> > tool for this scenario as Boyang mentioned or follow up later, so I
> > prefer to keep this KIP unchanged to minimize the scope.
> >      Calling for vote ~
> >
> >  Thanks!
> >  Feyman
> >
> >  ------------------------------------------------------------------
> >  发件人:Boyang Chen <reluctanthero...@gmail.com>
> >  发送时间:2020年4月8日(星期三) 02:15
> >  收件人:dev <dev@kafka.apache.org>
> >  主 题:Re: 回复:回复:回复:回复:回复:[Vote] KIP-571: Add option to force remove
> > members in StreamsResetter
> >
> >  Hey Feyman,
> >
> >  I think Matthias' suggestion is optional, and we could just use admin
> tool
> >  to remove single static members as well.
> >
> >  Boyang
> >
> >  On Tue, Apr 7, 2020 at 11:00 AM Matthias J. Sax <mj...@apache.org>
> wrote:
> >
> >  > > Would you mind to elaborate why we still need that
> >  >
> >  > Sure.
> >  >
> >  > For static memership, the session timeout it usually set quite high.
> >  > This make scaling in an application tricky: if you shut down one
> >  > instance, no rebalance would happen until `session.timeout.ms` hits.
> >  > This is specific to Kafka Streams, because when a Kafka Stream
> > client is
> >  > closed, it does _not_ send a `LeaveGroupRequest`. Hence, the
> >  > corresponding partitions would not be processed for a long time and
> >  > thus, fall back.
> >  >
> >  > Given that each instance will have a unique `instance.id` provided by
> >  > the user, we could allow users to remove the instance they want to
> >  > decommission from the consumer group without the need to wait for
> >  > `session.timeout.ms`.
> >  >
> >  > Hence, it's not an application reset scenario for which one wants to
> >  > remove all members, but a scaling-in scenario. For dynamic
> > membership,
> >  > this issue usually does not occur because the `session.timeout.ms` is
> >  > set to a fairly low value and a rebalance would happen quickly after
> > an
> >  > instance is decommissioned.
> >  >
> >  > Does this make sense?
> >  >
> >  > As said before, we may or may not include this in this KIP. It's up
> > to
> >  > you if you want to address it or not.
> >  >
> >  >
> >  > -Matthias
> >  >
> >  >
> >  >
> >  > On 4/7/20 7:12 AM, feyman2009 wrote:
> >  > > Hi, Matthias
> >  > >     Thanks a lot!
> >  > >     So you do not plan so support removing a _single static_
> > member via
> >  > `StreamsResetter`?
> >  > >     =>
> >  > >         Would you mind to elaborate why we still need that if we
> > are
> >  > able to batch remove active members with adminClient?
> >  > >
> >  > > Thanks!
> >  > >
> >  > > Feyman
> >  > >  ------------------------------------------------------------------
> >  > > 发件人:Matthias J. Sax <mj...@apache.org>
> >  > > 发送时间:2020年4月7日(星期二) 08:25
> >  > > 收件人:dev <dev@kafka.apache.org>
> >  > > 主 题:Re: 回复:回复:回复:回复:[Vote] KIP-571: Add option to force remove
> > members
> >  > in StreamsResetter
> >  > >
> >  > > Overall LGTM.
> >  > >
> >  > > +1 (binding)
> >  > >
> >  > > So you do not plan so support removing a _single static_ member via
> >  > > `StreamsResetter`? We can of course still add this as a follow up
> > but it
> >  > > might be nice to just add it to this KIP right away. Up to you if
> > you
> >  > > want to include it or not.
> >  > >
> >  > >
> >  > > -Matthias
> >  > >
> >  > >
> >  > >
> >  > > On 3/30/20 8:16 AM, feyman2009 wrote:
> >  > >> Hi, Boyang
> >  > >>     Thanks a lot, that make sense, we should not expose member.id
> > in
> >  > the MemberToRemove anymore, I have fixed it in the KIP.
> >  > >>
> >  > >>
> >  > >> Feyman
> >  > >> ------------------------------------------------------------------
> >  > >> 发件人:Boyang Chen <reluctanthero...@gmail.com>
> >  > >> 发送时间:2020年3月29日(星期日) 01:45
> >  > >> 收件人:dev <dev@kafka.apache.org>; feyman2009 <feyman2...@aliyun.com>
> >  > >> 主 题:Re: 回复:回复:回复:[Vote] KIP-571: Add option to force remove
> > members in
> >  > StreamsResetter
> >  > >>
> >  > >> Hey Feyman,
> >  > >>
> >  > >> thanks for the update. I assume we would rely entirely on the
> > internal
> >  > changes for `removeMemberFromGroup` by sending a DescribeGroup
> > request
> >  > first. With that in mind, I don't think we need to add member.id to
> >  > MemberToRemove anymore, as it is only facing public where users will
> > only
> >  > configure group.instance.id?
> >  > >> On Fri, Mar 27, 2020 at 5:04 PM feyman2009
> >  > <feyman2...@aliyun.com.invalid> wrote:
> >  > >> Bump, can anyone kindly take a look at the updated KIP-571?
> > Thanks!
> >  > >>
> >  > >>
> >  > >>
> > ------------------------------------------------------------------
> >  > >>  发件人:feyman2009 <feyman2...@aliyun.com.INVALID>
> >  > >>  发送时间:2020年3月23日(星期一) 08:51
> >  > >>  收件人:dev <dev@kafka.apache.org>
> >  > >>  主 题:回复:回复:回复:回复:[Vote] KIP-571: Add option to force remove
> > members in
> >  > StreamsResetter
> >  > >>
> >  > >>  Hi, team
> >  > >>      I have updated the KIP-571 according to our latest discussion
> >  > results, would you mind to take a look? Thanks!
> >  > >>
> >  > >>  Feyman
> >  > >>
> >  > >>
> >  > >>
> > ------------------------------------------------------------------
> >  > >>  发件人:Boyang Chen <reluctanthero...@gmail.com>
> >  > >>  发送时间:2020年3月19日(星期四) 13:41
> >  > >>  收件人:dev <dev@kafka.apache.org>; feyman2009
> > <feyman2...@aliyun.com>
> >  > >>  主 题:Re: 回复:回复:回复:[Vote] KIP-571: Add option to force remove
> > members in
> >  > StreamsResetter
> >  > >>
> >  > >>  Thanks for the insight Feyman. I personally feel adding another
> > admin
> >  > client command is redundant, so picking option 1). The memberInfos
> > struct
> >  > is internal and just used for result reference purposes. I think it
> > could
> >  > still work even we overload with `removeAll` option, if that makes
> > sense.
> >  > >>
> >  > >>  Boyang
> >  > >>  On Wed, Mar 18, 2020 at 8:51 PM feyman2009
> >  > <feyman2...@aliyun.com.invalid> wrote:
> >  > >>  Hi, team
> >  > >>       Before going too far on the KIP update, I would like to
> > hear your
> >  > opinions about how we would change the interface of AdminClient, the
> > two
> >  > alternatives I could think of are:
> >  > >>       1) Extend adminClient.removeMembersFromConsumerGroup to
> > support
> >  > remove all
> >  > >>           As Guochang suggested, we could add some flag param in
> >  > RemoveMembersFromConsumerGroupOptions to indicated the "remove all"
> > logic.
> >  > >>       2) Add a new API like
> >  > adminClient.removeAllMembersFromConsumerGroup(groupId, options)
> >  > >>
> >  > >>       I think 1) will be more compact from the API perspective,
> > but
> >  > looking at the code, I found that the if we are going to remove all,
> > then
> >  > the
> > RemoveMembersFromConsumerGroupResult#memberInfos/memberResult()/all()
> >  > should be changed accordingly, and they seem not that meaningful
> > under the
> >  > "remove all" scenario.
> >  > >>
> >  > >>       A minor thought about the
> >  > adminClient.removeMembersFromConsumerGroup API is:
> >  > >>       Looking at some other deleteXX APIs, like deleteTopics,
> >  > deleteRecords, the results contains only a Map<A, Future<B>>, I
> > think it's
> >  > enough to describe the related results, is it make sense that we may
> > remove
> >  > memberInfos in RemoveMembersFromConsumerGroupResult ? This KIP has no
> >  > dependency on this if we choose alternative 2)
> >  > >>
> >  > >>       Could you advise? Thanks!
> >  > >>
> >  > >>   Feyman
> >  > >>
> >  > >>
> >  > >>   送时间:2020年3月15日(星期日) 10:11
> >  > >>   收件人:dev <dev@kafka.apache.org>
> >  > >>   主 题:回复:回复:回复:回复:[Vote] KIP-571: Add option to force remove
> > members in
> >  > StreamsResetter
> >  > >>
> >  > >>   Hi, all
> >  > >>       Thanks a lot for your feedback!
> >  > >>       According to the discussion, it seems we don't have some
> > valid
> >  > use cases for removing specific dynamic members, I think it makes
> > sense to
> >  > encapsulate the "get and delete" logic in adminClient. I will update
> > the
> >  > KIP shortly!
> >  > >>
> >  > >>       Thanks!
> >  > >>
> >  > >>   Feyman
> >  > >>
> >  > >>
> >  > >>
> > ------------------------------------------------------------------
> >  > >>   发件人:Boyang Chen <reluctanthero...@gmail.com>
> >  > >>   发送时间:2020年3月14日(星期六) 00:39
> >  > >>   收件人:dev <dev@kafka.apache.org>
> >  > >>   主 题:Re: 回复:回复:回复:[Vote] KIP-571: Add option to force remove
> > members
> >  > in StreamsResetter
> >  > >>
> >  > >>   Thanks Matthias and Guozhang for the feedback. I'm not worrying
> > too
> >  > much
> >  > >>   about the member.id exposure as we have done so in a couple of
> >  > areas. As
> >  > >>   for the recommended admin client change, I think it makes sense
> > in an
> >  > >>   encapsulation perspective. Maybe I'm still a bit hesitant as we
> > are
> >  > losing
> >  > >>   the flexibility of closing only a subset of `dynamic members`
> >  > potentially,
> >  > >>   but we could always get back and address it if some user feels
> >  > necessary to
> >  > >>   have it.
> >  > >>
> >  > >>   My short answer would be, LGTM :)
> >  > >>
> >  > >>   Boyang
> >  > >>
> >  > >>   On Thu, Mar 12, 2020 at 5:26 PM Guozhang Wang
> > <wangg...@gmail.com>
> >  > wrote:
> >  > >>
> >  > >>   > Hi Matthias,
> >  > >>   >
> >  > >>   > About the AdminClient param API: that's a great point here. I
> > think
> >  > overall
> >  > >>   > if users want to just "remove all members" they should not
> > need to
> >  > first
> >  > >>   > get all the member.ids themselves, but instead internally the
> > admin
> >  > client
> >  > >>   > can first issue a describe-group request to get all the
> > member.ids,
> >  > and
> >  > >>   > then use them in the next issued leave-group request, all
> >  > abstracted away
> >  > >>   > from the users. With that in mind, maybe in
> >  > >>   > RemoveMembersFromConsumerGroupOptions we can just introduce an
> >  > overloaded
> >  > >>   > flag param besides "members" that indicate "remove all"?
> >  > >>   >
> >  > >>   > Guozhang
> >  > >>   >
> >  > >>   > On Thu, Mar 12, 2020 at 2:59 PM Matthias J. Sax
> > <mj...@apache.org>
> >  > wrote:
> >  > >>   >
> >  > >>   > > Feyman,
> >  > >>   > >
> >  > >>   > > some more comments/questions:
> >  > >>   > >
> >  > >>   > > The description of `LeaveGroupRequest` is clear but it's
> > unclear
> >  > how
> >  > >>   > > `MemberToRemove` should behave. Which parameter is required?
> >  > Which is
> >  > >>   > > optional? What is the relationship between both.
> >  > >>   > >
> >  > >>   > > The `LeaveGroupRequest` description clearly states that
> >  > specifying a
> >  > >>   > > `memberId` is optional if the `groupInstanceId` is
> > provided. If
> >  > >>   > > `MemberToRemove` applies the same pattern, it must be
> > explicitly
> >  > defined
> >  > >>   > > in the KIP (and explained in the JavaDocs of
> > `MemberToRemove`)
> >  > because
> >  > >>   > > we cannot expect that an admin-client users knows that
> > internally
> >  > a
> >  > >>   > > `LeaveGroupRequest` is used nor what the semantics of a
> >  > >>   > > `LeaveGroupRequest` are.
> >  > >>   > >
> >  > >>   > >
> >  > >>   > > About Admin API:
> >  > >>   > >
> >  > >>   > > In general, I am also confused that we allow so specify a
> >  > `memberId` at
> >  > >>   > > all, because the `memberId` is an internal id that is not
> > really
> >  > exposed
> >  > >>   > > to the user. Hence, from a AdminClient point of view,
> > accepting a
> >  > >>   > > `memberId` as input seems questionable to me? Of course,
> >  > `memberId` can
> >  > >>   > > be collected via `describeConsumerGroups()` but it will
> > return the
> >  > >>   > > `memberId` of _all_ consumer in the group and thus how
> > would a
> >  > user know
> >  > >>   > > which member should be removed for a dynamic group (if an
> >  > individual
> >  > >>   > > member should be removed)?
> >  > >>   > >
> >  > >>   > > Hence, how can any user get to know the `memberId` of an
> >  > individual
> >  > >>   > > client in a programtic way?
> >  > >>   > >
> >  > >>   > > Also I am wondering in general, why the removal of single
> > dynamic
> >  > member
> >  > >>   > > is important? In general, I would expect a short
> >  > `session.timeout` for
> >  > >>   > > dynamic groups and thus removing a specific member from the
> > group
> >  > seems
> >  > >>   > > not to be an important feature -- for static groups we
> > expect a
> >  > long
> >  > >>   > > `session.timeout` and a user can also identify individual
> > clients
> >  > via
> >  > >>   > > `groupInstandId`, hence the feature makes sense for this
> > case and
> >  > is
> >  > >>   > > straight forward to use.
> >  > >>   > >
> >  > >>   > >
> >  > >>   > > About StreamsResetter:
> >  > >>   > >
> >  > >>   > > For this case we just say "remove all members" and thus the
> >  > >>   > > `describeConsumerGroup` approach works. However, it seems
> > to be a
> >  > >>   > > special case?
> >  > >>   > >
> >  > >>   > > Or, if we expected that the "remove all members" use case
> > is the
> >  > norm,
> >  > >>   > > why can't we make a change admin-client to directly accept
> > a `
> >  > group.id`?
> >  > >>   > > The admin-client can internal first do a
> > `DescribeGroupRequest`
> >  > and
> >  > >>   > > afterward corresponding `LeaveGroupRequest` -- i.e.,
> > instead of
> >  > building
> >  > >>   > > this pattern in `StreamsResetter` we build it directly into
> >  > >>   > `AdminClient`.
> >  > >>   > >
> >  > >>   > > Last, for static group the main use case seems to be to
> > remove an
> >  > >>   > > individual member from the group but this feature is not
> > covered
> >  > by the
> >  > >>   > > KIP: I think using `--force` to remove all members makes
> > sense,
> >  > but an
> >  > >>   > > important second feature to remove an individual static
> > member
> >  > would
> >  > >>   > > require it's own flag to specify a single
> > `group.instance.id`.
> >  > >>   > >
> >  > >>   > >
> >  > >>   > > Thoughts?
> >  > >>   > >
> >  > >>   > >
> >  > >>   > > -Matthias
> >  > >>   > >
> >  > >>   > >
> >  > >>   > >
> >  > >>   > >
> >  > >>   > >
> >  > >>   > > On 3/11/20 8:43 PM, feyman2009 wrote:
> >  > >>   > > > Hi, Sophie
> >  > >>   > > >     For 1) Sorry, I found that my expression is kind of
> >  > misleading,
> >  > >>   > > what I actually mean is: "if --force not specified, an
> > exception
> >  > saying
> >  > >>   > > there are still active members on broker side will be
> > thrown and
> >  > >>   > > suggesting using StreamsResetter with --force", I just
> > updated
> >  > the KIP
> >  > >>   > > page.
> >  > >>   > > >
> >  > >>   > > >     For 2)
> >  > >>   > > >         I may also had some misleading expression
> > previous, to
> >  > clarify
> >  > >>   > :
> >  > >>   > > >
> >  > >>   > > > Also, it's more efficient to just send a single "clear the
> >  > group"
> >  > >>   > > request vs sending a LeaveGroup
> >  > >>   > > > request for every single member. What do you think?
> >  > >>   > > > => the comparison is to send a single "clear the group"
> > request
> >  > vs
> >  > >>   > > sending a "get members" + a "remove members" request since
> > the
> >  > >>   > > adminClient.removeMembersFromConsumerGroup support batch
> > removal.
> >  > We
> >  > >>   > > don't need to send lots of leaveGroup requests for every
> > single
> >  > member.
> >  > >>   > > >
> >  > >>   > > >        I can understand your point, but I think we could
> > reuse
> >  > the
> >  > >>   > > current
> >  > >>   > > > adminClient.removeMembersFromConsumerGroup interface
> >  > effectively with
> >  > >>   > > the KIP.
> >  > >>   > > >         What do you think?
> >  > >>   > > >
> >  > >>   > > >     Thanks!
> >  > >>   > > >
> >  > >>   > > > Feyman
> >  > >>   > > >
> >  > >>   > > >
> >  > >>   > > >
> >  > ------------------------------------------------------------------
> >  > >>   > > > 发件人:Sophie Blee-Goldman <sop...@confluent.io>
> >  > >>   > > > 发送时间:2020年3月10日(星期二) 03:02
> >  > >>   > > > 收件人:dev <dev@kafka.apache.org>; feyman2009 <
> >  > feyman2...@aliyun.com>
> >  > >>   > > > 主 题:Re: 回复:回复:[Vote] KIP-571: Add option to force remove
> >  > >>   > > members in StreamsResetter
> >  > >>   > > >
> >  > >>   > > > Hey Feyman,
> >  > >>   > > >
> >  > >>   > > > 1) Regarding point 2 in your last email, if I understand
> >  > correctly you
> >  > >>   > > propose to change
> >  > >>   > > > the current behavior of the reset tool when --force is not
> >  > specified,
> >  > >>   > > and wait for (up to)
> >  > >>   > > > the session timeout for all members to be removed. I'm
> > not sure
> >  > we
> >  > >>   > > should change this,
> >  > >>   > > > especially now that we have a better way to handle the
> > case
> >  > when the
> >  > >>   > > group is not empty:
> >  > >>   > > > we should continue to throw an exception and fail fast,
> > but can
> >  > print
> >  > >>   > > a message suggesting
> >  > >>   > > > to use the new --force option to remove remaining group
> >  > members. Why
> >  > >>   > > make users wait
> >  > >>   > > > for the session timeout when we've just added a new
> > feature
> >  > that means
> >  > >>   > > they don't have to?
> >  > >>   > > >
> >  > >>   > > > 2) Regarding Matthias' question:
> >  > >>   > > >
> >  > >>   > > >> I am really wondering, if for a static group, we should
> > allow
> >  > users
> >  > >>   > > toremove individual members? For a dynamic group this
> > feature
> >  > would not
> >  > >>   > > > make much sense IMHO, because the `memberId` is not know
> > by the
> >  > user.
> >  > >>   > > >
> >  > >>   > > > I think his point is similar to what I was trying to get
> > at
> >  > earlier,
> >  > >>   > > with the proposal to add a new
> >  > >>   > > > #removeAllMembers API rather than an API to remove
> > individual
> >  > members
> >  > >>   > > according to their
> >  > >>   > > > memberId. As he explained, removing based on memberId is
> > likely
> >  > not
> >  > >>   > > that useful in general.
> >  > >>   > > > Also, it's not actually what we want to do here; maybe we
> >  > should avoid
> >  > >>   > > adding a new API
> >  > >>   > > > that we think may be useful in other contexts (remove
> > individual
> >  > >>   > > member based on memberId),
> >  > >>   > > > and just add the API we actually need (remove all members
> > from
> >  > group)
> >  > >>   > > in this KIP? We can
> >  > >>   > > > always add the "remove individual member by memberId" API
> > at a
> >  > later
> >  > >>   > > point, if it turns out to
> >  > >>   > > > actually be requested for specific reasons?
> >  > >>   > > >
> >  > >>   > > > Also, it's more efficient to just send a single "clear the
> >  > group"
> >  > >>   > > request vs sending a LeaveGroup
> >  > >>   > > > request for every single member. What do you think?
> >  > >>   > > >
> >  > >>   > > >
> >  > >>   > > >
> >  > >>   > > >
> >  > >>   > > > On Sat, Mar 7, 2020 at 1:41 AM feyman2009
> >  > >>   > > <feyman2...@aliyun.com.invalid> wrote:
> >  > >>   > > > Hi, Matthias
> >  > >>   > > >      Thanks, I updated the KIP to mention the deprecated
> > and
> >  > newly
> >  > >>   > > added methods.
> >  > >>   > > >
> >  > >>   > > >  1. What happens is `groupInstanceId` is used for a
> > dynamic
> >  > group? What
> >  > >>   > > >  happens if both parameters are specified? What happens if
> >  > `memberId`
> >  > >>   > > >  is specified for a static group?
> >  > >>   > > >
> >  > >>   > > >  => my understanding is that the dynamic/static
> > membership is
> >  > member
> >  > >>   > > level other than group level, and I think above questions
> > could be
> >  > >>   > > answered by the "Leave Group Logic Change" section in
> > KIP-345:
> >  > >>   > >
> >  > >>   > >
> >  > >>   >
> >  >
> >
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-345%3A+Introduce+static+membership+protocol+to+reduce+consumer+rebalances
> >  > >>   > > ,
> >  > >>   > > this KIP stays consistent with KIP-345.
> >  > >>   > > >
> >  > >>   > > >  2. About the `--force` option. Currently, StreamsResetter
> >  > fails with
> >  > >>   > an
> >  > >>   > > >  error if the consumer group is not empty. You state in
> > your
> >  > KIP that:
> >  > >>   > > >
> >  > >>   > > >  > without --force, we need to wait for session timeout.
> >  > >>   > > >
> >  > >>   > > >  Is this an intended behavior change if `--force` is not
> > used
> >  > or is the
> >  > >>   > > >  KIP description incorrect?
> >  > >>   > > >
> >  > >>   > > >  => This is the intended behavior. For this part, I think
> > there
> >  > are
> >  > >>   > > two ways to go:
> >  > >>   > > >  1) (the implicit way) Not introducing the new "--force"
> >  > option, with
> >  > >>   > > this KIP, StreamsResetter will by default remove active
> >  > members(with
> >  > >>   > > long session timeout configured) on broker side
> >  > >>   > > >  2) (the explicit way) Introduce the new "--force" option,
> >  > users need
> >  > >>   > > to explicitly specify --force to remove the active members.
> > If
> >  > --force
> >  > >>   > > not specified, the StreamsResetter behaviour is as previous
> >  > versions'.
> >  > >>   > > >
> >  > >>   > > >  I think the two alternatives above are both feasible,
> >  > personally I
> >  > >>   > > prefer way 2.
> >  > >>   > > >
> >  > >>   > > >  3. For my own understanding: with the `--force` option,
> > we
> >  > intend to
> >  > >>   > get
> >  > >>   > > >  all `memberIds` and send a "remove member" request for
> > each
> >  > with
> >  > >>   > > >  corresponding `memberId` to remove the member from the
> > group
> >  > >>   > > >  (independent is the group is static or dynamic)?
> >  > >>   > > >
> >  > >>   > > >  => Yeah, minor thing to mention is we will send the
> > "remove
> >  > member"
> >  > >>   > > request for each member(could be dynamic member or static
> > member)
> >  > to
> >  > >>   > > remove them from group
> >  > >>   > > >  for dynamic members, both "group.instance.id" and
> > "member.id"
> >  > will be
> >  > >>   > > specified
> >  > >>   > > >  for dynamic members, only "member.id" will be specified
> >  > >>   > > >
> >  > >>   > > >  4. I am really wondering, if for a static group, we
> > should
> >  > allow users
> >  > >>   > > to
> >  > >>   > > >  remove individual members? For a dynamic group this
> > feature
> >  > would not
> >  > >>   > > >  make much sense IMHO, because the `memberId` is not know
> > by
> >  > the user.
> >  > >>   > > >
> >  > >>   > > >  => KIP-345 introduced the batch removal feature for both
> > static
> >  > >>   > > member and dynamic member, my understanding is that "allow
> > users
> >  > to
> >  > >>   > > >  remove individual members" could be useful for rolling
> > bounce
> >  > and
> >  > >>   > > scale down accoding to KIP-345. KafkaAdminClient currently
> > only
> >  > support
> >  > >>   > > static member removal and this KIP-571 enables dynamic
> > member
> >  > removal
> >  > >>   > > for it, which is also consistent with the broker side logic.
> >  > Users could
> >  > >>   > > get the member.id (and group.instance.id if for static
> > member) by
> >  > >>   > > adminClient.describeConsumerGroups.
> >  > >>   > > >
> >  > >>   > > >  Furthermore, I don't have an assumption that a consumer
> > group
> >  > should
> >  > >>   > > contain only static or dynamic members, and I think KIP-345
> > and
> >  > this KIP
> >  > >>   > > don't need to be based on this assumption.
> >  > >>   > > >  You could correct me if I have the wrong understanding :)
> >  > >>   > > >
> >  > >>   > > >  Thanks!
> >  > >>   > > >  Feyman
> >  > >>   > > >
> >  > >>   > > >
> >  > >>   > > >
> >  > >>   > > >
> >  > >>   > > >
> >  > >>   > > >
> >  > >>   > > >
> >  > >>   > > >
> >  > ------------------------------------------------------------------
> >  > >>   > > >  发件人:Matthias J. Sax <mj...@apache.org>
> >  > >>   > > >  发送时间:2020年3月6日(星期五) 02:20
> >  > >>   > > >  收件人:dev <dev@kafka.apache.org>
> >  > >>   > > >  主 题:Re: 回复:回复:[Vote] KIP-571: Add option to force remove
> >  > >>   > > members in StreamsResetter
> >  > >>   > > >
> >  > >>   > > > Feyman,
> >  > >>   > > >
> >  > >>   > > > thanks a lot for the KIP. Overall LGTM. I have a few more
> >  > comment and
> >  > >>   > > > questions (sorry for the late reply):
> >  > >>   > > >
> >  > >>   > > >
> >  > >>   > > > The KIP mentions that some constructors will be
> > deprecated.
> >  > Those
> >  > >>   > should
> >  > >>   > > > be listed explicitly. For example:
> >  > >>   > > >
> >  > >>   > > >
> >  > >>   > > > public class MemberToRemove {
> >  > >>   > > >
> >  > >>   > > >   // deprecated methods
> >  > >>   > > >
> >  > >>   > > >   @Deprecated
> >  > >>   > > >   public MemberToRemove(String groupInstanceId);
> >  > >>   > > >
> >  > >>   > > >   // new methods
> >  > >>   > > >
> >  > >>   > > >   public MemberToRemove()
> >  > >>   > > >
> >  > >>   > > >   public MemberToRemove withGroupInstanceId(String
> >  > groupInstanceId)
> >  > >>   > > >
> >  > >>   > > >   public MemberToRemove withMemberId(String memberId)
> >  > >>   > > > }
> >  > >>   > > >
> >  > >>   > > > What happens is `groupInstanceId` is used for a dynamic
> > group?
> >  > What
> >  > >>   > > > happens if both parameters are specified? What happens if
> >  > `memberId`
> >  > >>   > > > is specified for a static group?
> >  > >>   > > >
> >  > >>   > > >
> >  > >>   > > > About the `--force` option. Currently, StreamsResetter
> > fails
> >  > with an
> >  > >>   > > > error if the consumer group is not empty. You state in
> > your KIP
> >  > that:
> >  > >>   > > >
> >  > >>   > > >> without --force, we need to wait for session timeout.
> >  > >>   > > >
> >  > >>   > > > Is this an intended behavior change if `--force` is not
> > used or
> >  > is the
> >  > >>   > > > KIP description incorrect?
> >  > >>   > > >
> >  > >>   > > > For my own understanding: with the `--force` option, we
> > intend
> >  > to get
> >  > >>   > > > all `memberIds` and send a "remove member" request for
> > each with
> >  > >>   > > > corresponding `memberId` to remove the member from the
> > group
> >  > >>   > > > (independent is the group is static or dynamic)?
> >  > >>   > > >
> >  > >>   > > > I am really wondering, if for a static group, we should
> > allow
> >  > users to
> >  > >>   > > > remove individual members? For a dynamic group this
> > feature
> >  > would not
> >  > >>   > > > make much sense IMHO, because the `memberId` is not know
> > by the
> >  > user.
> >  > >>   > > >
> >  > >>   > > >
> >  > >>   > > >
> >  > >>   > > > -Matthias
> >  > >>   > > >
> >  > >>   > > >
> >  > >>   > > > On 3/5/20 7:15 AM, Bill Bejeck wrote:
> >  > >>   > > >> Thanks for the KIP.  +1 (binding).
> >  > >>   > > >
> >  > >>   > > >> -Bill
> >  > >>   > > >
> >  > >>   > > >
> >  > >>   > > >
> >  > >>   > > >> On Wed, Mar 4, 2020 at 12:40 AM Guozhang Wang <
> >  > wangg...@gmail.com>
> >  > >>   > > >> wrote:
> >  > >>   > > >
> >  > >>   > > >>> Thanks, +1 from me (binding).
> >  > >>   > > >>>
> >  > >>   > > >>> On Tue, Mar 3, 2020 at 9:39 PM feyman2009 <
> >  > feyman2...@aliyun.com>
> >  > >>   > > >>> wrote:
> >  > >>   > > >>>
> >  > >>   > > >>>> Hi, Guozhang Thanks a lot for the advice, that make
> > sense! I
> >  > >>   > > >>>> have updated the KIP page with the operational steps of
> >  > >>   > > >>>> StreamsResetter.
> >  > >>   > > >>>>
> >  > >>   > > >>>> Thanks! Feyman
> >  > >>   > > >>>>
> >  > >>   > > >>>>
> >  > ------------------------------------------------------------------
> >  > >>   > > >>>>
> >  > >>   > > >>>>
> >  > >>   > > > 发件人:Guozhang Wang <wangg...@gmail.com>
> >  > >>   > > >>>> 发送时间:2020年3月3日(星期二) 14:22 收件人:dev
> > <dev@kafka.apache.org>;
> >  > >>   > > >>>> feyman2009 <feyman2...@aliyun.com> 主 题:Re: 回复:回复:[Vote]
> >  > >>   > > >>>> KIP-571: Add option to force remove members in
> >  > StreamsResetter
> >  > >>   > > >>>>
> >  > >>   > > >>>> Hello Feyman, thanks for the proposal!
> >  > >>   > > >>>>
> >  > >>   > > >>>> I read through the doc and overall it looks good to me.
> >  > >>   > > >>>>
> >  > >>   > > >>>> One minor thing I'd still like to point out is that,
> > the
> >  > >>   > > >>>> "removeMembersFromConsumerGroup" only sends a
> > leave-group
> >  > >>   > > >>>> request to the coordinator to let it remove the member,
> >  > >>   > > >>>> however, if the member is still there alive and
> > running then
> >  > it
> >  > >>   > > >>>> would soon be notified that it is no
> >  > >>   > > >>> longer
> >  > >>   > > >>>> a legal member of the group via heartbeats, and then
> >  > >>   > > >>>> automatically tries
> >  > >>   > > >>> to
> >  > >>   > > >>>> re-join the group. So on the operational side, it is
> > still
> >  > >>   > > >>>> required that the following steps:
> >  > >>   > > >>>>
> >  > >>   > > >>>> 1) first stop the consumers (of streams instances),
> > wait
> >  > until
> >  > >>   > > >>>> the shutdown is complete. 2) then use admin client in
> > case
> >  > the
> >  > >>   > > >>>> stopped consumers are still registered at the broker
> > side and
> >  > >>   > > >>>> we do not want to wait for session timeout.
> >  > >>   > > >>>>
> >  > >>   > > >>>> Even with this KIP, people should still not skip step
> > 1)
> >  > above,
> >  > >>   > > >>>> since otherwise the consumers would re-connect and
> > re-join
> >  > the
> >  > >>   > > >>>> group
> >  > >>   > > >>> immediately
> >  > >>   > > >>>> still.
> >  > >>   > > >>>>
> >  > >>   > > >>>> In your doc you've already mentioned "Furthermore,
> > users
> >  > should
> >  > >>   > > >>>> make sure all the stream applications are shutdown when
> >  > running
> >  > >>   > > >>>> StreamsResetter
> >  > >>   > > >>> with
> >  > >>   > > >>>> --force, otherwise it might trigger unexpected
> > rebalance. "
> >  > >>   > > >>>> What I'd want to clarify is that no matter if "--force"
> >  > option
> >  > >>   > > >>>> is enabled, this is
> >  > >>   > > >>> always
> >  > >>   > > >>>> the case that users should shutdown the streams
> > instances
> >  > >>   > > >>>> first, and then use the streams resetter :)
> >  > >>   > > >>>>
> >  > >>   > > >>>> As long as that is clarified in the proposal
> > documentation,
> >  > I'm
> >  > >>   > > >>>> +1 on
> >  > >>   > > >>> this
> >  > >>   > > >>>> KIP.
> >  > >>   > > >>>>
> >  > >>   > > >>>>
> >  > >>   > > >>>> Thanks again for the contribution, Guozhang
> >  > >>   > > >>>>
> >  > >>   > > >>>>
> >  > >>   > > >>>> On Mon, Mar 2, 2020 at 6:31 AM feyman2009
> >  > >>   > > >>>> <feyman2...@aliyun.com.invalid
> >  > >>   > > >>>>
> >  > >>   > > >>>> wrote: Hi, John Sorry, I have mistaken the KIP approval
> >  > >>   > > >>>> standard, anyway, I will
> >  > >>   > > >>> start
> >  > >>   > > >>>> the PR soon and waiting for more binding approvals.
> >  > >>   > > >>>>
> >  > >>   > > >>>> Thanks! Feyman
> >  > >>   > > >>>>
> >  > >>   > > >>>>
> >  > >>   > > >>>>
> >  > ------------------------------------------------------------------
> >  > >>   > > >>>>
> >  > >>   > > >>>>
> >  > >>   > > > 发件人:John Roesler <vvcep...@apache.org>
> >  > >>   > > >>>> 发送时间:2020年3月2日(星期一) 22:00 收件人:dev
> >  > >>   > > > <dev@kafka.apache.org> 主
> >  > >>   > > >>>> 题:Re: 回复:回复:[Vote] KIP-571: Add option to force remove
> >  > members
> >  > >>   > > >>>> in StreamsResetter
> >  > >>   > > >>>>
> >  > >>   > > >>>> Hi Feyman,
> >  > >>   > > >>>>
> >  > >>   > > >>>> Sorry, but we actually need 3 binding votes for the
> > KIP to
> >  > >>   > > >>>> pass. Please feel free to keep bumping the thread
> > until some
> >  > >>   > > >>>> more committers can take
> >  > >>   > > >>> a
> >  > >>   > > >>>> look.
> >  > >>   > > >>>>
> >  > >>   > > >>>> By the way, you can totally start a PR, but we can’t
> > merge it
> >  > >>   > > >>>> until the KIP passes the vote.
> >  > >>   > > >>>>
> >  > >>   > > >>>> Thanks! John
> >  > >>   > > >>>>
> >  > >>   > > >>>> On Mon, Mar 2, 2020, at 00:24, feyman2009 wrote:
> >  > >>   > > >>>>> Hi,all Since currently we have 1 binding and two
> > non-binding
> >  > >>   > > >>>>> +1, I will update the KIP-571 as adopted and initiate
> > a PR
> >  > >>   > > >>>>> shortly
> >  > >>   > > >>>>>
> >  > >>   > > >>>>> Thanks! Feyman
> >  > >>   > > >>>>>
> >  > >>   > > >>>>>
> >  > >>   > > >>>>>
> >  > ------------------------------------------------------------------
> >  > >>   > > >>>>>
> >  > >>   > > >>>>>
> >  > >>   > > > 发件人:Sophie Blee-Goldman <sop...@confluent.io>
> >  > >>   > > >>>>> 发送时间:2020年2月28日(星期五) 10:17 收件人:dev
> >  > >>   > > > <dev@kafka.apache.org> 主
> >  > >>   > > >>>>> 题:Re: 回复:[Vote] KIP-571: Add option to force remove
> > members
> >  > >>   > > >>>>> in
> >  > >>   > > >>>> StreamsResetter
> >  > >>   > > >>>>>
> >  > >>   > > >>>>> Thanks for the KIP, +1 (non-binding)
> >  > >>   > > >>>>>
> >  > >>   > > >>>>> On Thu, Feb 27, 2020 at 12:40 PM Boyang Chen <
> >  > >>   > > >>> reluctanthero...@gmail.com
> >  > >>   > > >>>>>
> >  > >>   > > >>>>> wrote:
> >  > >>   > > >>>>>
> >  > >>   > > >>>>>> Thanks Feyman, +1 (non-binding)
> >  > >>   > > >>>>>>
> >  > >>   > > >>>>>> On Thu, Feb 27, 2020 at 9:25 AM John Roesler
> >  > >>   > > >>>>>> <vvcep...@apache.org>
> >  > >>   > > >>>> wrote:
> >  > >>   > > >>>>>>
> >  > >>   > > >>>>>>> Thanks for the proposal!
> >  > >>   > > >>>>>>>
> >  > >>   > > >>>>>>> I'm +1 (binding) -John
> >  > >>   > > >>>>>>>
> >  > >>   > > >>>>>>> On Wed, Feb 26, 2020, at 19:41, feyman2009 wrote:
> >  > >>   > > >>>>>>>> Updated with the KIP link:
> >  > >>   > > >>>>>>>>
> >  > >>   > > >>>>>>>
> >  > >>   > > >>>>>>
> >  > >>   > > >>>>
> >  > >>   > > >>>
> >  > >>   >
> >  > https://cwiki.apache.org/confluence/display/KAFKA/KIP-571%3A+Add+opti
> >  > >>   > > > on+to+force+remove+members+in+StreamsResetter
> >  > >>   > > >>>>>>>>
> >  > >>   > > >>>>>>>>
> >  > >>   > > >>>>>>>>
> >  > >>   > > >>>
> >  > >>   > > >>>
> >  > >>   > > >
> >  > ------------------------------------------------------------------
> >  > >>   > > >>>>>>>> 发件人:feyman2009 <feyman2...@aliyun.com.INVALID> 发送时
> >  > >>   > > >>>>>>>> 间:2020年2月27日(星期四) 09:38 收件人:dev
> > <dev@kafka.apache.org>
> >  > >>   > > >>>>>>>> 主 题:[Vote] KIP-571: Add option to force remove
> > members
> >  > >>   > > >>>>>>>> in
> >  > >>   > > >>>>>> StreamsResetter
> >  > >>   > > >>>>>>>>
> >  > >>   > > >>>>>>>>
> >  > >>   > > >>>>>>>> Hi, all I would like to start a vote on KIP-571:
> > Add
> >  > >>   > > >>>>>>>> option to force
> >  > >>   > > >>>> remove
> >  > >>   > > >>>>>>>> members in StreamsResetter .
> >  > >>   > > >>>>>>>>
> >  > >>   > > >>>>>>>> Thanks! Feyman
> >  > >>   > > >>>>>>>>
> >  > >>   > > >>>>>>>>
> >  > >>   > > >>>>>>>
> >  > >>   > > >>>>>>
> >  > >>   > > >>>>>
> >  > >>   > > >>>>>
> >  > >>   > > >>>>
> >  > >>   > > >>>>
> >  > >>   > > >>>>
> >  > >>   > > >>>> -- -- Guozhang
> >  > >>   > > >>>>
> >  > >>   > > >>>>
> >  > >>   > > >>>>
> >  > >>   > > >>>
> >  > >>   > > >>> -- -- Guozhang
> >  > >>   > > >>>
> >  > >>   > > >
> >  > >>   > > >
> >  > >>   > > >
> >  > >>   > >
> >  > >>   > >
> >  > >>   >
> >  > >>   > --
> >  > >>   > -- Guozhang
> >  > >>   >
> >  > >>
> >  > >>
> >  > >>
> >  > >>
> >  > >>
> >  > >
> >  > >
> >  >
> >  >
> >
> >
> >
> >
>
>

-- 
-- Guozhang


Reply via email to