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