mirror of
https://github.com/chrislusf/seaweedfs
synced 2025-09-19 01:30:23 +02:00
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.