apache / apache/iggy

Kafka gateway: Kafka FindCoordinator, JoinGroup, SyncGroup, and Heartbeat APIs

Open
#3,541 0 comments 0 reactions 0 assignees View on GitHub
gateways
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.