Skip to content

KAFKA-20292 [2/N]: Handle membership changes during offloaded streams assignments#21727

Open
squah-confluent wants to merge 1 commit intoapache:trunkfrom
confluentinc:squah-kip-1263-handle-assignment-offload-membership-changes-streams
Open

KAFKA-20292 [2/N]: Handle membership changes during offloaded streams assignments#21727
squah-confluent wants to merge 1 commit intoapache:trunkfrom
confluentinc:squah-kip-1263-handle-assignment-offload-membership-changes-streams

Conversation

@squah-confluent
Copy link
Contributor

When a member leaves a group, its target assignment is directly removed.
When a static member is replaced, its target assignment is moved to the
new member. These target assignment updates can happen while an
offloaded assignment is being computed.

When an offloaded assignment has finished, we must not emit records for
members that have left the group and we must apply any static member
replacements that occurred to the emitted records, to match the
behavior when assignments are not offloaded. That is, we act as if the
member removals and static member replacements are reordered after the
assignment.

We break up the assignment process into two parts: computing the target
assignment map and generating the records. Only the former can run on
the executor. To generate the records without removed members and with
static member replacements applied we need to use the current state of
the group.

… assignments

When a member leaves a group, its target assignment is directly removed.
When a static member is replaced, its target assignment is moved to the
new member. These target assignment updates can happen while an
offloaded assignment is being computed.

When an offloaded assignment has finished, we must not emit records for
members that have left the group and we must apply any static member
replacements that occurred to the emitted records, to match the
behavior when assignments are not offloaded. That is, we act as if the
member removals and static member replacements are reordered after the
assignment.

We break up the assignment process into two parts: computing the target
assignment map and generating the records. Only the former can run on
the executor. To generate the records without removed members and with
static member replacements applied we need to use the current state of
the group.
@github-actions github-actions bot added triage PRs from the community group-coordinator labels Mar 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

group-coordinator triage PRs from the community

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant