conduktor.io ↗

Kafka SyncGroup Request Wire Format v5 — Binary Protocol Layout

What is SyncGroup?

After JoinGroup, the elected leader pushes computed assignments via SyncGroup, and every member waits for the response to learn its own assignment. A rebalance that completes JoinGroup but hangs here usually means the leader is taking too long to compute assignments (large groups, slow custom assignors).

Related Errors

COORDINATOR_NOT_AVAILABLE · FENCED_INSTANCE_ID · GROUP_AUTHORIZATION_FAILED · INCONSISTENT_GROUP_PROTOCOL · INVALID_GROUP_ID · REBALANCE_IN_PROGRESS · UNKNOWN_MEMBER_ID

Wire Diagram

Request Header · flexible
message_size int32 · 4B
api_key int16 · 2B
api_version int16 · 2B
correlation_id int32 · 4B
client_id string (compact)
tagged var
SyncGroupRequest v5
GroupId string (compact)
GenerationId int32 · 4B
MemberId string (compact)
GroupInstanceId? string (compact)
ProtocolType? string (compact)
ProtocolName? string (compact)
Assignments array
tagged var
MemberId string (compact)
Assignment bytes (compact)
tagged var

Schema & Example

Schema
{
  "GroupId": string,
  "GenerationId": int32,
  "MemberId": string,
  "GroupInstanceId": string?,
  "ProtocolType": string?,
  "ProtocolName": string?,
  "Assignments": [{
      "MemberId": string,
      "Assignment": bytes
  }]
}
Example
{
  "GroupId": "order-processors",
  "GenerationId": 5,
  "MemberId": "consumer-1-abc123",
  "GroupInstanceId": null,
  "ProtocolType": "consumer",
  "ProtocolName": null,
  "Assignments": [{
      "MemberId": "consumer-1-abc123",
      "Assignment": "<assignment>"
  }]
}