1
0
Fork 0
mirror of https://github.com/chrislusf/seaweedfs synced 2025-09-18 17:20:22 +02:00
seaweedfs/KAFKA_GATEWAY_PLAN.md
chrislu 3847984566 Phase 0 Part 1: Implement basic tests and offset fixes
- Add unit tests for gateway connection/refusal in test/kafka/unit/gateway_test.go
- Add Schema Registry connectivity test in test/kafka/integration/docker_test.go
- Implement legacy offset key parsing in weed/mq/kafka/offset/smq_storage.go
- Fix leaderEpoch placeholder to return 0 instead of -1 in offset_management.go
- Add comprehensive test coverage for parseTopicPartitionKey function

All tests passing. Ready for Phase 0 Part 2 (API cleanup and logging).
2025-09-15 20:26:24 -07:00

2.8 KiB

Kafka Gateway Development Plan

Overview

Implementation plan for SeaweedFS Kafka Gateway feature completion, organized by difficulty and dependencies.

Phase 0: Quick Wins and Hygiene (2-3 days)

Goal: Foundation cleanup and basic test coverage

Tasks

  • Unit tests: gateway connection/refusal in test/kafka/unit/gateway_test.go
  • Schema Registry connectivity test in test/kafka/integration/docker_test.go
  • Offsets: legacy key parsing in weed/mq/kafka/offset/smq_storage.go
  • Offsets: leaderEpoch placeholder (return 0 instead of -1)
  • ApiVersions audit: align return set with validation
  • Admin polish: error codes in DeleteTopics/CreateTopics
  • Logging: replace fmt.Printf with structured logging
  • Throttle: consistent throttle_time_ms across responses

Exit Criteria: All unit/integration tests green, no debug prints, consistent throttling

Phase 1: Data Plane + Admin Visibility (1 week)

Goal: Core fetch/produce robustness and group management

Tasks

  • Fetch: record batch concatenation in fetch.go:getMultipleRecordBatches
  • Fetch: GZIP compression implementation
  • Group introspection: DescribeGroups (15) and ListGroups (16) handlers
  • Client compatibility tests expansion
  • Metrics: basic request/error/latency tracking

Exit Criteria: Multi-batch fetch works, gzip validated, group introspection functional

Phase 2: Consumer Groups Robustness (1 week)

Goal: Stable consumer group rebalancing

Tasks

  • Rebalancing test with new framework
  • Cooperative-sticky assignment implementation (feature-flagged)
  • Consumer group state management hardening

Exit Criteria: Deterministic rebalances, cooperative-sticky tests passing

Phase 3: Schema Management Readiness (2 weeks)

Goal: Schema validation and encoding fixes

Tasks

  • Avro union re-encoding fix (re-enable skipped tests)
  • Protobuf index varints + descriptor field APIs
  • Schema topic detection and metadata lookup
  • Produce: per-topic schema validation

Exit Criteria: Schema decode/encode tests pass, produce validation enabled

Phase 4: Schematized Fetch Integration (1-2 weeks)

Goal: End-to-end schema round-trip

Tasks

  • fetchSchematizedRecords SeaweedMQ integration
  • Batch reconstruction with compression/CRC
  • End-to-end schema tests

Exit Criteria: Round-trip produce/fetch for all schema formats

Risk Mitigation

  • Avro fix blocks schema features - prioritize early
  • Cooperative-sticky can be feature-flagged
  • Compression beyond gzip can be deferred
  • Performance targets: 100k messages, p99 < reasonable latency

Release Criteria

  • All test suites green (unit/integration/e2e/client-compat)
  • Consumer groups stable under churn
  • Schema topics round-trip correctly
  • No debug logging in production paths