이선민 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)

Reply via email to