[ 
https://issues.apache.org/jira/browse/KAFKA-20172?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18132847#comment-18132847
 ] 

Ramu commented on KAFKA-20172:
------------------------------

## KAFKA-20172 — Implementation Update

**Attached patch:** Online migration between Classic and Streams rebalance 
protocols  
**Commit:** 
[`947ad83e82b404aab5c3d7a21de2382ce162ac97`](https://github.com/ramu11/kafka/commit/947ad83e82b404aab5c3d7a21de2382ce162ac97)

### Implemented in this patch

- **Online migration:** Converts a classic Streams group to a Streams group 
when a native Streams-protocol member joins.
- **Protocol bridging:** Translates classic JoinGroup, SyncGroup, and heartbeat 
operations while classic and native Streams clients coexist.
- **Reverse migration:** Adds conversion back to a classic Streams group when 
native members leave and migrated classic members remain.
- **Task reconciliation:** Preserves classic ownership metadata and translates 
Streams assignments for classic clients, including representing warm-up tasks 
as standbys.
- **Probing and offset metadata:** Extends subscription metadata to version 12 
to carry the probing rebalance interval and known task changelog end-offset 
sums. Unknown end offsets are not treated as caught up.
- **Regression coverage:** Adds coordinator, metadata, assignment, and 
migration tests for the implemented paths.

### Remaining work

1. **P1 — Probing lifecycle:** Validate repeated probing cycles end to end, 
including interval enforcement, warm-up completion, and cases where the 
assignment epoch remains unchanged.
2. **P1 — Ownership transfer:** Add cross-member tests proving active tasks are 
not transferred until the previous owner confirms revocation.
3. **P1 — Reverse-migration recovery:** Cover last-member departure edge cases, 
fresh coordinator replay, append failures, pending revocations, and timer 
recovery.
4. **P2/P3 — Compatibility and validation:** Expand static-membership, timeout, 
LeaveGroup, mixed-version, and Kafka Streams system-test coverage. Verify that 
end-offset telemetry produces the correct assignment decisions, not just that 
the metadata is propagated.

### Scope and status

This is an **intermediate implementation checkpoint, not a claim of complete 
KIP-1071 compliance**. Broader KIP work—including HA assignment and rack-aware 
warm-up support, topology updates, and regex topic subscriptions—is tracked 
separately under 
[KAFKA-20116](https://issues.apache.org/jira/browse/KAFKA-20116), 
[KAFKA-20170](https://issues.apache.org/jira/browse/KAFKA-20170), and 
[KAFKA-20171](https://issues.apache.org/jira/browse/KAFKA-20171).

Focused Gradle tests passed at this checkpoint; comprehensive system-test and 
recovery validation remains outstanding.

References: 
[KIP-1071](https://cwiki.apache.org/confluence/display/KAFKA/KIP-1071%3A+Streams+Rebalance+Protocol)
 · [KAFKA-20172](https://issues.apache.org/jira/browse/KAFKA-20172)

> Support online migration between classic and streams rebalance protocols
> ------------------------------------------------------------------------
>
>                 Key: KAFKA-20172
>                 URL: https://issues.apache.org/jira/browse/KAFKA-20172
>             Project: Kafka
>          Issue Type: Task
>          Components: group-coordinator, streams
>            Reporter: Lucas Brutschy
>            Priority: Major
>              Labels: kip1071
>         Attachments: KAFKA-20172-online-migration-947ad83-2026-10-27.zip
>
>
> The streams rebalance protocol \(KIP\-1071\) currently only supports offline 
> migration between the classic and streams protocols. Users must shut down all 
> application instances, wait for the session timeout to expire, update the 
> configuration, and then restart. This requires a maintenance window and 
> causes downtime for the streams application.
> As specified in KIP\-1071, online migration should allow converting classic 
> consumer groups to streams groups during rolling client upgrades. When the 
> first streams client using the new protocol joins the group, the group should 
> be converted from a classic group to a streams group. Classic clients should 
> receive REBALANCE\_IN\_PROGRESS errors triggering JoinGroup/SyncGroup calls 
> while new protocol clients use StreamsGroupHeartbeat. The broker should 
> internally translate between protocols during the migration period. The group 
> should revert to classic when the last new\-protocol member leaves. This 
> enables zero\-downtime migration between protocols.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to