kafka/group-coordinator
Sean Quah 71a7d85955
KAFKA-19431: Ensure consumer and share assignment consistency with subscriptions (#20055)
Filter out unsubscribed topics during reconciliation.

This eliminates the window where a consumer group assignment could
contain unsubscribed topics when a member unsubscribes from a topic
while it has unrevoked partitions.

We also apply filtering in a few other cases that would arise when
client-side assignors are implemented, since new assignments would no
longer be available immediately. This is important for mixed groups,
since clients on the classic protocol will rejoin if they receive a
topic in their assignment that is no longer in their subscription.

Regex subscriptions have a window where the regex is not resolved and we
cannot know which topics are part of the subscription. We opt to be
conservative and treat unresolved regexes as matching no topics.

The same change is applied to share groups, since the reconciliation
process is similar.

To gauge the performance impact of the change, we add a jmh benchmark.

Reviewers: Lucas Brutschy <lbrutschy@confluent.io>, Lianet Magran  <lmagrans@confluent.io>, Sushant Mahajan <smahajan@confluent.io>, Dongnuo Lyu <dlyu@confluent.io>, David Jacot <djacot@confluent.io>
2025-10-06 14:57:44 +02:00
..
group-coordinator-api/src/main/java/org/apache/kafka/coordinator/group/api/assignor KAFKA-19344: Replace desc.assignablePartitions with spec.isPartitionAssignable. (#19838) 2025-05-28 20:27:29 +01:00
src KAFKA-19431: Ensure consumer and share assignment consistency with subscriptions (#20055) 2025-10-06 14:57:44 +02:00
.gitignore