You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.5 KiB
2.5 KiB
Kafka API Version Matrix Audit
Summary
This document audits the advertised API versions in handleApiVersions()
against actual implementation support and identifies mismatches that need correction.
Current Status: MISMATCHES FOUND ⚠️
API Version Discrepancies
API Key | API Name | Advertised | Actually Implemented | Status | Action Needed |
---|---|---|---|---|---|
18 | ApiVersions | v0-v3 | v0-v3 | ✅ Match | None |
3 | Metadata | v0-v7 | v0-v7 | ✅ Match | None |
0 | Produce | v0-v7 | v0-v7 | ✅ Match | None |
1 | Fetch | v0-v7 | v0-v7 | ✅ Match | None |
2 | ListOffsets | v0-v2 | v0-v2 | ✅ Match | None |
19 | CreateTopics | v0-v5 | v0-v5 | ✅ Match | None |
20 | DeleteTopics | v0-v4 | v0-v4 | ✅ Match | None |
11 | JoinGroup | v0-v7 | v0-v7 | ✅ Match | None |
14 | SyncGroup | v0-v5 | v0-v5 | ✅ Match | None |
8 | OffsetCommit | v0-v2 | v0-v2 | ✅ Match | None |
9 | OffsetFetch | v0-v5 | v0-v5 | ✅ Match | None |
10 | FindCoordinator | v0-v2 | v0-v2 | ✅ Match | None |
12 | Heartbeat | v0-v4 | v0-v4 | ✅ Match | None |
13 | LeaveGroup | v0-v4 | v0-v4 | ✅ Match | None |
Detailed Analysis
1. OffsetFetch API (Key 9)
- Advertised and implemented aligned at v0–v5.
2. CreateTopics API (Key 19)
- Advertised and implemented aligned at v0–v5.
Validation vs Advertisement Consistency
validateAPIVersion()
and handleApiVersions()
are consistent with the supported ranges.
Implementation Details
OffsetFetch Version Features:
- v0-v2: Basic offset fetch
- v3+: Includes throttle_time_ms
- v5+: Includes leader_epoch for each partition
CreateTopics Version Features:
- v0-v1: Regular array format
- v2-v5: Compact array format, tagged fields
Recommendations
- Re-verify after protocol changes to keep the matrix accurate
- Extend coverage as implementations grow; keep tests for version guards
Test Verification
- Exercise OffsetFetch v3–v5 with kafka-go and Sarama
- Exercise CreateTopics v5; verify fields and tagged fields
- Verify throttle_time_ms and leader_epoch population
- Ensure version validation permits supported versions only
Conservative Alternative
If we want to be conservative and not advertise versions we haven't thoroughly tested:
- OffsetFetch: Limit to v3 (throttle time support) instead of v5
- CreateTopics: Keep at v4 unless v5 is specifically needed
This would still fix the main discrepancy while being more cautious about untested version features.