You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: kafka/kip-848-migration-guide.md
+8-8Lines changed: 8 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
Starting with **confluent-kafka-go 2.12.0** (GA release), the next generation consumer group rebalance protocol defined in [KIP-848](https://cwiki.apache.org/confluence/display/KAFKA/KIP-848%3A+The+Next+Generation+of+the+Consumer+Rebalance+Protocol) is **production-ready**.
4
4
5
-
**Note:** The new consumer group protocol defined in [KIP-848](https://cwiki.apache.org/confluence/display/KAFKA/KIP-848%3A+The+Next+Generation+of+the+Consumer+Rebalance+Protocol) is not enabled by default. There are few contract change associated with the new protocol and might cause breaking changes. `group.protocol` configuration property dictates whether to use the new `consumer` protocol or older `classic` protocol. It defaults to `classic` if not provided.
5
+
**Note:** The new consumer group protocol defined in [KIP-848](https://cwiki.apache.org/confluence/display/KAFKA/KIP-848%3A+The+Next+Generation+of+the+Consumer+Rebalance+Protocol) is not enabled by default. There are a few contract changes associated with the new protocol and might cause breaking changes. `group.protocol` configuration property dictates whether to use the new `consumer` protocol or older `classic` protocol. It defaults to `classic` if not provided.
6
6
7
7
# Overview
8
8
@@ -51,15 +51,15 @@ All [KIP-848](https://cwiki.apache.org/confluence/display/KAFKA/KIP-848%3A+The+N
51
51
- In the **rebalance callbacks**, you **must only use** (optional - if not used, client will handle it internally):
52
52
-`consumer.IncrementalAssign(e.Partitions)` to assign new partitions
53
53
-`consumer.IncrementalUnassign(e.Partitions)` to revoke partitions
54
-
-**Do not** use `consumer.Assign()` or `consumer.Unassign()`when using`group.protocol='consumer'` (KIP-848).
55
-
- If you don't provide \*Assign/\*Unassign inside rebalance callbacks, the client will automatically use \*Assign/\*Unassign internally.
54
+
-**Do not** use `consumer.Assign()` or `consumer.Unassign()`after subscribing with`group.protocol='consumer'` (KIP-848).
55
+
- If you don't call `IncrementalAssign()`/`IncrementalUnassign()` inside rebalance callbacks, the client will automatically use `IncrementalAssign()`/`IncrementalUnassign()` internally.
56
56
- ⚠️ The `e.Partitions` list passed to `IncrementalAssign()` and `IncrementalUnassign()` contains only the **incremental changes** — partitions being **added** or **revoked** — **not the full assignment**, as was the case with `Assign()` in the classic protocol.
57
57
- All assignors under KIP-848 are now **sticky**, including `range`, which was **not sticky** in the classic protocol.
58
58
59
59
## Static Group Membership
60
60
61
61
- Duplicate `group.instance.id` handling:
62
-
-**Newly joining member** is fenced with **UNRELEASED_INSTANCE_ID (fatal)**.
62
+
-**Newly joining member** is fenced with **ErrUnreleasedInstanceID (fatal)**.
63
63
- (Classic protocol fenced the **existing** member instead.)
64
64
- Implications:
65
65
- Ensure only **one active instance per**`group.instance.id`.
@@ -74,7 +74,7 @@ All [KIP-848](https://cwiki.apache.org/confluence/display/KAFKA/KIP-848%3A+The+N
74
74
75
75
## Closing / Auto-Commit
76
76
77
-
- On `close()` or unsubscribe with auto-commit enabled:
77
+
- On `Close()` or `Unsubscribe()` with auto-commit enabled:
78
78
- Member retries committing offsets until a timeout expires.
79
79
- Currently uses the **default remote session timeout**.
80
80
- Future **KIP-1092** will allow custom commit timeouts.
@@ -92,9 +92,9 @@ All [KIP-848](https://cwiki.apache.org/confluence/display/KAFKA/KIP-848%3A+The+N
92
92
-**Assignors:** Classic range assignor was **not sticky**; KIP-848 assignors are **sticky**, including range
93
93
-**Deprecated configs:** Classic client configs are replaced by `group.remote.assignor` and broker-controlled session/heartbeat configs
94
94
-**Static membership fencing:** KIP-848 fences **new member** on duplicate `group.instance.id`
95
-
-**Session timeout:** Classic enforced on client; KIP-848 enforced on broker
96
-
-**Auto-commit on close:** Classic stops at client session timeout; KIP-848 retries until remote timeout
97
-
-**Unknown topics:** KIP-848 does not return error on subscription if topic missing
95
+
-**Session timeout:** Classic: enforced on client; KIP-848: enforced on broker
96
+
-**Auto-commit on close:** Classic: stops at client session timeout; KIP-848: retries until remote timeout
97
+
-**Unknown topics:** KIP-848 does not return error on subscription if topic is missing
98
98
-**Upgrade/Downgrade:** KIP-848 supports upgrade/downgrade from/to `classic` and `consumer` protocols
0 commit comments