Lucas Brutschy created KAFKA-20254:
--------------------------------------
Summary: Streams group replay fails after log compaction removes
classic group tombstone
Key: KAFKA-20254
URL: https://issues.apache.org/jira/browse/KAFKA-20254
Project: Kafka
Issue Type: Task
Affects Versions: 4.2.0
Reporter: Lucas Brutschy
Assignee: Lucas Brutschy
After offline migration from classic group to streams group, the group
coordinator fails with "Group X is not a streams group" after a coordinator
restart or partition reassignment.
The offline migration (classic → streams) writes a GroupMetadataKey tombstone
to delete the classic group. However, the OffsetCommitKey records for that
group remain in __consumer_offsets. After log compaction removes the tombstone
(past delete.retention.ms), the following happens during coordinator replay:
1. OffsetMetadataManager.replay encounters offset commit records without an
existing group
2. It calls getOrMaybeCreateClassicGroup(groupId, true), which creates a
simple classic group (empty, no protocol type)
3. When streams group records are replayed next,
getOrMaybeCreatePersistedStreamsGroup finds a classic group already exists and
throws "Group X is not a streams group"
Trigger conditions:
- Classic group converted to streams group via offline migration
- Enough time passes for log compaction to clean up the GroupMetadataKey
tombstone
- Coordinator restarts or partition is reassigned, triggering a full replay
--
This message was sent by Atlassian Jira
(v8.20.10#820010)