What is Fetch?
Consumers and follower replicas both issue this continuously for log replication and consumption. When a consumer's fetch stalls with empty responses despite records existing, check isolation.level: read_committed consumers are blocked by open transactions until EndTxn.
Wire Diagram
Request Header
message_size
int32 · 4B
api_key
int16 · 2B
api_version
int16 · 2B
correlation_id
int32 · 4B
client_id
string
FetchRequest v5
ReplicaId
int32 · 4B
MaxWaitMs
int32 · 4B
MinBytes
int32 · 4B
MaxBytes
int32 · 4B
IsolationLevel
int8 · 1B
Topic
string
Partition
int32 · 4B
FetchOffset
int64 · 8B
LogStartOffset
int64 · 8B
PartitionMaxBytes
int32 · 4B
Schema & Example
Schema { "ReplicaId": int32, "MaxWaitMs": int32, "MinBytes": int32, "MaxBytes": int32, "IsolationLevel": int8, "Topics": [{ "Topic": string, "Partitions": [{ "Partition": int32, "FetchOffset": int64, "LogStartOffset": int64, "PartitionMaxBytes": int32 }] }] }
Example { "ReplicaId": -1, "MaxWaitMs": 500, "MinBytes": 65536, "MaxBytes": 65536, "IsolationLevel": 1, "Topics": [{ "Topic": "orders", "Partitions": [{ "Partition": 0, "FetchOffset": 150382, "LogStartOffset": 284729, "PartitionMaxBytes": 65536 }] }] }