Kafka gateway: Kafka FindCoordinator, JoinGroup, SyncGroup, and Heartbeat APIs
- Dominant language
- Rust
- Stars
- 4.9k
- Forks
- 432
- Avg merge
- 2d 10h
- Merged PRs (30d)
- 173
Description
Part of #3560.
## Summary
Implement Kafka consumer group membership protocol (API keys 10, 11, 12, 14) in the gateway coordinator.
## Motivation
Phase 2 goal: full consumer group semantics — join, assignment, heartbeat, rebalance. Required for `kafka-console-consumer.sh --group`.
## Depends on
- #3539 — Phase 1 complete
- #3540 — offset persistence design approved
## Scope
- [ ] **FindCoordinator (10)** — return gateway as coordinator
- [ ] **JoinGroup (11)** — member registration, leader election (single-bridge coordinator)
- [ ] **SyncGroup (14)** — partition assignment to members
- [ ] **Heartbeat (12)** — session timeout, trigger rebalance on missed heartbeats
- [ ] Assignment strategies: document supported (range, round-robin, sticky) or subset
- [ ] In-memory or persisted group state per #3540
## Acceptance criteria
- [ ] Two consumers same group get disjoint partition assignment
- [ ] Heartbeat timeout evicts member and triggers rebalance
## References
- Rollout plan: https://github.com/apache/iggy/discussions/3253#discussioncomment-17181030
Contributor guide
Research direction
Start at the gateway coordinator's Kafka API handling entry point and review the completed Phase 1 work in #3539 and the approved offset-persistence design in #3540. Trace API keys 10, 11, 12, and 14, then use the rollout plan as context. Done means two consumers receive disjoint assignments and a missed heartbeat evicts a member and triggers rebalance.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- backend-api-design, distributed-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100