Hi all, @Chia: That's an excellent point. I'll amend the KIP like this:
"Where, for simplicity, we can assume the assignment epoch of a partition that is not assigned to that member to be the broker-side member epoch." This should make the new validation behave like the old validation in this corner case. Overall, we'll get a weaker validation than the current validation. Adding new guard-rails to prevent committing to unassigned partitions or even unsubscribed topics makes sense to me, but this wasn't really the motivation for this KIP and the discussion did not focus on it. If we want this, we should probably write a separate KIP and have a separate discussion. @Sean: Yes, self-assigned commits will not have a member epoch so the validation described in the KIP will not affect this logic. I can add a clarification to the KIP. Cheers, Lucas On Mon, Feb 16, 2026 at 9:42 AM Sean Quah via dev <[email protected]> wrote: > > > You cannot commit partitions that are not assigned to you. > > Don't we have to continue supporting clients that assign() themselves > partitions manually? I don't think the broker is aware of manual > assignments. > > Thanks, > Sean > > On Mon, Feb 16, 2026 at 2:17 AM Chia-Ping Tsai <[email protected]> wrote: > > > > You cannot commit partitions that are not assigned to you. > > > > Thanks for the clarification. That sounds good to me, but this new > > protection implies a change to the existing behavior. Therefore, it would > > be good to explicitly mention this in the KIP > > > > For example, the following sendOffsetsToTransaction can succeed today, but > > will fail after this KIP. > > > > ```java > > consumer.subscribe(List.of("chia")); > > ... > > producer.sendOffsetsToTransaction(Map.of( > > new TopicPartition("chia", 0), new OffsetAndMetadata(100), > > new TopicPartition("ikea", 0), new OffsetAndMetadata(100)), // not > > assigned partitions > > consumer.groupMetadata()); > > ``` > > > > Best, > > Chia-Ping > >
