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.
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)
tagged
var
TopicName
string (compact)
tagged
var
PartitionIndex
int32 · 4B
LeaderId
int32 · 4B
LeaderEpoch
int32 · 4B
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 }] }