conduktor.io ↗

Kafka JoinGroup Changelog — Protocol Version History

What is JoinGroup?

Triggers a rebalance: any new member, departing member, or subscription change causes all members to call JoinGroup and wait at a synchronization barrier. The leader (first joiner) receives all members' metadata and runs the partition assignor.

VersionKafkaChanges
JoinGroupRequest
v02.2
+ GroupId string
+ SessionTimeoutMs int32
+ MemberId string
+ ProtocolType string
+ Protocols []JoinGroupRequestProtocol
+ Name string
+ Metadata bytes
v12.2
+ RebalanceTimeoutMs int32
adds RebalanceTimeoutMs. Version 2 and 3 are the same as version 1. Starting from version 4, the client needs to issue a second request to join group Starting from version 5, we add a new field called groupInstanceId to indicate member identity across restarts. with assigned id.
v22.2No changes
v32.2No changes
v42.2No changes
v52.3
+ GroupInstanceId string
v62.4
~ Flexible encoding enabled FLEXIBLE
is the first flexible version.
v72.5
is the same as version 6.
v83.2
+ Reason string
adds the Reason field (KIP-800).
v93.2
is the same as version 8.
JoinGroupResponse
v02.2
+ ErrorCode int16
+ GenerationId int32
+ ProtocolName string
+ Leader string
+ MemberId string
+ Members []JoinGroupResponseMember
+ MemberId string
+ Metadata bytes
v12.2
is the same as version 0.
v22.2
+ ThrottleTimeMs int32
adds throttle time.
v32.2
on quota violation, brokers send out responses before throttling.
v42.2
the client needs to issue a second request to join group with assigned id.
v52.3
+ GroupInstanceId string
is bumped to apply group.instance.id to identify member across restarts.
v62.4
~ Flexible encoding enabled FLEXIBLE
is the first flexible version. Starting from version 7, the broker sends back the Protocol Type to the client (KIP-559).
v72.5
+ ProtocolType string
~ ProtocolName became nullable
v83.2
is the same as version 7.
v93.2
+ SkipAssignment bool
adds the SkipAssignment field.