이선민 created KAFKA-21360:
---------------------------
Summary: Heterogeneous simple share assignor keeps partitions of
topics that no member subscribes to
Key: KAFKA-21360
URL: https://issues.apache.org/jira/browse/KAFKA-21360
Project: Kafka
Issue Type: Bug
Components: group-coordinator
Affects Versions: 4.2.0
Reporter: 이선민
Assignee: 이선민
union of the members' subscriptions. A topic that no member subscribes to
anymore is never visited, so a member whose existing assignment contains it
gets its old partitions for that topic carried over into the new target
assignment.
For the same reason, the {{else}} branch in
{{TopicAssignmentPartialBuilder#revokeUnassignablePartitions}} that removes the
topic is
unreachable, since {{topicId}} always comes from {{subscribedTopicIds}} there.
The homogeneous builder handles this case correctly
{{SimpleHomogeneousAssignmentBuilder}}
iterates over each member's existing assignment and removes topics that are no
longer subscribed.
This behavior has been present since the builder was introduced by KAFKA-19363
(https://github.com/apache/kafka/pull/20074), and is present in 4.2.0.
h3. Reproduction
Invoke {{SimpleAssignor#assign}} with the following group specification:
* Topics: T1 (4 partitions), T2 (2 partitions), T3 (2 partitions)
* Member A subscribes to {T1}, existing assignment {T1=[0], T2=[0]}
* Member B subscribes to {T1, T3}, existing assignment {T1=[1], T2=[1]}
* Subscription type: HETEROGENEOUS
Actual assignor output (one observed run):
{noformat}
A={T2=[0], T1=[0, 2]}
B={T2=[1], T1=[1, 3], T3=[0, 1]}
{noformat}
Expected result: T2 is revoked from both members.
h3. Impact
Since KAFKA-19431, {{ShareGroupAssignmentBuilder}} filters out topics outside
each member's subscription when reconciling the target assignment into the
member's current assignment, so these stale partitions are not passed on to
members.
This filtering does not modify the stored target assignment. The stale entries
can therefore
survive subsequent rebalances while the group remains heterogeneous and no
member subscribes to the topic.
This was found while adding tests in
https://github.com/apache/kafka/pull/23874, where it was confirmed as a bug in
review (https://github.com/apache/kafka/pull/23874#issuecomment-6394163465).
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)