[
https://issues.apache.org/jira/browse/KAFKA-18687?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sean Quah updated KAFKA-18687:
------------------------------
Description:
When a consumer protocol static member replaces an existing member in a classic
group, it's not necessary to recompute the assignment. However, it happens
anyway.
In
[ConsumerGroup.fromClassicGroup|https://github.com/apache/kafka/blob/0ff4dafb7de4e24ddb7961d52e50e728f2eee4eb/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/modern/consumer/ConsumerGroup.java#L1140],
we don't set the group's subscriptionMetadata.
Later in the consumer group heartbeat, we [call
updateSubscriptionMetadata|https://github.com/apache/kafka/blob/0ff4dafb7de4e24ddb7961d52e50e728f2eee4eb/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupMetadataManager.java#L1748],
which [notices that the group's subscriptionMetadata needs an
update|https://github.com/apache/kafka/blob/0ff4dafb7de4e24ddb7961d52e50e728f2eee4eb/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupMetadataManager.java#L2757]
and bumps the epoch. Since the epoch is bumped, we [recompute the
assignment|https://github.com/apache/kafka/blob/0ff4dafb7de4e24ddb7961d52e50e728f2eee4eb/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupMetadataManager.java#L1766].
As a fix, we can try setting the subscriptionMetadata in
ConsumerGroup.fromClassicGroup.
was:
When a consumer protocol static member replaces an existing member in a classic
group, it's not necessary to recompute the assignment. However, it happens
anyway.
In
[ConsumerGroup.fromClassicGroup|https://github.com/apache/kafka/blob/0ff4dafb7de4e24ddb7961d52e50e728f2eee4eb/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/modern/consumer/ConsumerGroup.java#L1140],
we don't set the group's subscriptionMetadata.
Later in the consumer group heartbeat, we [call
updateSubscriptionMetadata|https://github.com/apache/kafka/blob/0ff4dafb7de4e24ddb7961d52e50e728f2eee4eb/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupMetadataManager.java#L1748],
which [notices that the group's subscriptionMetadata needs an
update|https://github.com/apache/kafka/blob/0ff4dafb7de4e24ddb7961d52e50e728f2eee4eb/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupMetadataManager.java#L2757]
and bumps the epoch. Since the epoch is bumped, we [recompute the
assignment|https://github.com/apache/kafka/blob/0ff4dafb7de4e24ddb7961d52e50e728f2eee4eb/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupMetadataManager.java#L1766].
> New group coordinator triggers assignment recalculation on consumer group
> upgrade due to static member replacement
> ------------------------------------------------------------------------------------------------------------------
>
> Key: KAFKA-18687
> URL: https://issues.apache.org/jira/browse/KAFKA-18687
> Project: Kafka
> Issue Type: Bug
> Components: group-coordinator
> Reporter: Sean Quah
> Assignee: Dongnuo Lyu
> Priority: Minor
>
> When a consumer protocol static member replaces an existing member in a
> classic group, it's not necessary to recompute the assignment. However, it
> happens anyway.
> In
> [ConsumerGroup.fromClassicGroup|https://github.com/apache/kafka/blob/0ff4dafb7de4e24ddb7961d52e50e728f2eee4eb/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/modern/consumer/ConsumerGroup.java#L1140],
> we don't set the group's subscriptionMetadata.
> Later in the consumer group heartbeat, we [call
> updateSubscriptionMetadata|https://github.com/apache/kafka/blob/0ff4dafb7de4e24ddb7961d52e50e728f2eee4eb/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupMetadataManager.java#L1748],
> which [notices that the group's subscriptionMetadata needs an
> update|https://github.com/apache/kafka/blob/0ff4dafb7de4e24ddb7961d52e50e728f2eee4eb/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupMetadataManager.java#L2757]
> and bumps the epoch. Since the epoch is bumped, we [recompute the
> assignment|https://github.com/apache/kafka/blob/0ff4dafb7de4e24ddb7961d52e50e728f2eee4eb/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupMetadataManager.java#L1766].
> As a fix, we can try setting the subscriptionMetadata in
> ConsumerGroup.fromClassicGroup.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)