conduktor.io ↗

Kafka EndQuorumEpoch Request Wire Format v1 — Binary Protocol Layout

What is EndQuorumEpoch?

A stepping-down KRaft leader sends this to prompt other voters to start a new election immediately. Without it, the quorum would wait for the election timeout, making controller failover during planned maintenance much slower.

Related Errors

INCONSISTENT_VOTER_SET

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
EndQuorumEpochRequest v1
ClusterId? string (compact)
Topics array
LeaderEndpoints array
tagged var
TopicName string (compact)
Partitions array
tagged var
PartitionIndex int32 · 4B
LeaderId int32 · 4B
LeaderEpoch int32 · 4B
PreferredCandidates array
tagged var
CandidateId int32 · 4B
CandidateDirectoryId uuid · 16B
tagged var
Name string (compact)
Host string (compact)
Port uint16 · 2B
tagged var

Schema & Example

Schema
{
  "ClusterId": string?,
  "Topics": [{
      "TopicName": string,
      "Partitions": [{
          "PartitionIndex": int32,
          "LeaderId": int32,
          "LeaderEpoch": int32,
          "PreferredCandidates": [{
              "CandidateId": int32,
              "CandidateDirectoryId": uuid
          }]
      }]
  }],
  "LeaderEndpoints": [{
      "Name": string,
      "Host": string,
      "Port": uint16
  }]
}
Example
{
  "ClusterId": "dQw4w9WgXcQ",
  "Topics": [{
      "TopicName": "orders",
      "Partitions": [{
          "PartitionIndex": 3,
          "LeaderId": 1,
          "LeaderEpoch": 17,
          "PreferredCandidates": [{
              "CandidateId": 1,
              "CandidateDirectoryId": "550e8400-e29b-41d4-a716-446655440000"
          }]
      }]
  }],
  "LeaderEndpoints": [{
      "Name": "orders",
      "Host": "broker-1.kafka.local",
      "Port": 9092
  }]
}