Hi Andrew,

AS2: I added a note for now. If others feel strongly about it, we can
still add more administrative tools to the KIP - it should not change
the overall story significantly.

AS8: "streams.group.assignor.name" sounds good to me to distinguish
the config from class names. Not sure if I like the "default". To be
consistent, we'd then have to call it
`group.streams.default.session.timeout.ms` as well. I only added the
`.name` on both broker and group level for now.

AS10: Ah, I misread your comment, now I know what you meant. Good
point, fixed (by Bruno).

Cheers,
Lucas

On Fri, Jul 19, 2024 at 4:44 PM Andrew Schofield
<andrew_schofi...@live.com> wrote:
>
> Hi Lucas,
> I see that I hit send too quickly. One more comment:
>
> AS2: I think stating that there will be a `kafka-streams-group.sh` in a
> future KIP is fine to keep this KIP focused. Personally, I would probably
> put all of the gory details in this KIP, but then it’s not my KIP. A future
> pointer is fine too.
>
> Thanks,
> Andrew
>
>
> > On 19 Jul 2024, at 13:46, Lucas Brutschy <lbruts...@confluent.io.INVALID> 
> > wrote:
> >
> > Hi Andrew,
> >
> > thanks for getting the discussion going! Here are my responses.
> >
> > AS1: Good point, done.
> >
> > AS2: We were planning to add more administrative tools to the
> > interface in a follow-up KIP, to not make this KIP too large. If
> > people think that it would help to understand the overall picture if
> > we already add something like `kafka-streams-groups.sh`, we will do
> > that. I also agree that we should address how this relates to
> > KIP-1043, we'll add it.
> >
> > AS3: Good idea, that's more consistent with `assigning` and `reconciling` 
> > etc.
> >
> > AS4: Thanks, Fixed.
> >
> > AS5: Good catch. This was supposed to mean that we require CREATE on
> > cluster or CREATE on all topics, not both. Fixed.
> >
> > AS6: Thanks, Fixed.
> >
> > AS7. Thanks, Fixed.
> >
> > AS8: I think this works a bit different in this KIP than in consumer
> > groups. KIP-848 lets the members vote for a preferred assignor, and
> > the broker-side assignor is picked by majority vote. The
> > `group.consumer.assignors` specifies the list of assignors that are
> > supported on the broker, and is configurable because the interface is
> > pluggable. In this KIP, the task assignor is not voted on by members
> > but configured on the broker-side. `group.streams.assignor` is used
> > for this, and uses a specific name. If we'll make the task assignor
> > pluggable on the broker-side, we'd introduce a separate config
> > `group.streams.assignors`, which would indeed be a list of class
> > names. I think there is no conflict here, the two configurations serve
> > different purposes.  The only gripe I'd have here is naming as
> > `group.streams.assignor` and `group.streams.assignors` would be a bit
> > similar, but I cannot really think of a better name for
> > `group.streams.assignor`, so I'd probably rather introduce
> > `group.streams.assignors`  as `group.streams.possible_assignors`  or
> > something like that.
> >
> > AS9: I added explanations for the various record types. Apart from the
> > new topology record, and the partition metadata (which is based on the
> > topology and can only be created once we have a topology initialized)
> > the lifecycle for the records is basically identical as in KIP-848.
> >
> > AS10: In the consumer offset topic, the version in the key is used to
> > differentiate different schema types with the same content. So the
> > keys are not versioned, but the version field is "abused" as a type
> > tag. This is the same in KIP-848, we followed it for consistency.
> >
> > Cheers,
> > Lucas
> >
> >
> > On Thu, Jul 18, 2024 at 1:27 PM Andrew Schofield
> > <andrew_schofi...@live.com> wrote:
> >>
> >> Hi Lucas and Bruno,
> >>
> >> Thanks for the great KIP.
> >>
> >> I've read through the document and have some initial comments.
> >>
> >> AS1: I suppose that there is a new o.a.k.common.GroupType.STREAMS 
> >> enumeration
> >> constant. This is a change to the public interface and should be called 
> >> out.
> >>
> >> AS2: Since streams groups are no longer consumer groups, how does the user
> >> manipulate them, observe lag and so on? Will you add 
> >> `kafka-streams-groups.sh`
> >> or extend `kafka-streams-application-reset.sh`? Of course, KIP-1043 can 
> >> easily
> >> be extended to support streams groups, but that only lets the user see the
> >> groups, not manipulate them.
> >>
> >> AS3: I wonder whether the streams group state of UNINITIALIZED would be
> >> better expressed as INITIALIZING.
> >>
> >> AS4: In StreamsGroupInitializeRequest, Topology[].SourceTopicRegex should
> >> be nullable.
> >>
> >> AS5: Why does StreamsGroupInitialize require CREATE permission on the
> >> cluster resource? I imagine that this is one of the ways that the request 
> >> might
> >> be granted permission to create the StateChangelogTopics and
> >> RepartitionSourceTopics, but if it is granted permission to create those 
> >> topics
> >> with specific ACLs, would CREATE on the cluster resource still be required?
> >>
> >> AS6: StreamsGroupInitialize can also fail with TOPIC_AUTHORIZATION_FAILED
> >> and (subject to AS5) CLUSTER_AUTHORIZATION_FAILED.
> >>
> >> AS7: A tiny nit. You've used TopologyID (capitals) in 
> >> StreamsGroupHeartbeatRequest
> >> and a few others, but in all other cases the fields which are ids are 
> >> spelled Id.
> >> I suggest TopologyId.
> >>
> >> Also, "interal" is probably meant to be "interval”.
> >>
> >> AS8: For consumer groups, the `group.consumer.assignors` configuration is a
> >> list of class names. The assignors do have names too, but the 
> >> configuration which
> >> enables them is in terms of class names. I wonder whether the broker’s
> >> group.streams.assignor could actually be `group.streams.assignors` and 
> >> specified
> >> as a list of the class names of the supplied assignors. I know you're not 
> >> supporting
> >> other assignors yet, but when you do, I expect you would prefer to have 
> >> used class
> >> names from the start.
> >>
> >> The use of assignor names in the other places looks good to me.
> >>
> >> AS9: I'd find it really helpful to have a bit of a description about the 
> >> purpose and
> >> lifecycle of the 9 record types you've introduced on the 
> >> __consumer_offsets topic.
> >> I did a cursory review but without really understanding what's written 
> >> when,
> >> I can't do a thorough job of reviewing.
> >>
> >> AS10: In the definitions of the record keys, such as
> >> StreamsGroupCurrentMemberAssignmentKey, the versions of the fields must
> >> match the versions of the types.
> >>
> >> Thanks,
> >> Andrew
> >>
> >>> On 12 Jul 2024, at 09:04, Lucas Brutschy <lbruts...@confluent.io.INVALID> 
> >>> wrote:
> >>>
> >>> Hi all,
> >>>
> >>> I would like to start a discussion thread on KIP-1071: Streams
> >>> Rebalance Protocol. With this KIP, we aim to bring the principles laid
> >>> down by KIP-848 to Kafka Streams, to make rebalances more reliable and
> >>> scalable, and make Kafka Streams overall easier to deploy and operate.
> >>> The KIP proposed moving the assignment logic to the broker, and
> >>> introducing a dedicated group type and dedicated RPCs for Kafka
> >>> Streams.
> >>>
> >>> The KIP is here:
> >>> https://cwiki.apache.org/confluence/display/KAFKA/KIP-1071%3A+Streams+Rebalance+Protocol
> >>>
> >>> This is joint work with Bruno Cadonna.
> >>>
> >>> Please take a look and let us know what you think.
> >>>
> >>> Best,
> >>> Lucas
> >>
>

Reply via email to