[kafka] Serve ApiVersions from registered capabilities - #4260
Draft
gyang94 wants to merge 2 commits into
Draft
Conversation
Introduce API registration, request context, version validation, and asynchronous error mapping. Fix request buffer ownership and response serialization cleanup while preserving the existing ApiVersions entry point. Validated with mvn -o -pl fluss-rpc,fluss-kafka verify. Co-Authored-By: Codex <noreply@openai.com> AI-Model: gpt-6 AI-Contributed/Feature: 555/555 AI-Contributed/UT: 525/525
Route requests through the dispatcher and advertise only implemented APIs. Return version-aware errors for unsupported APIs and invalid requests. Validated with mvn -o -pl fluss-kafka verify (23 unit tests and 1 IT). Co-Authored-By: Codex <noreply@openai.com> AI-Model: gpt-6 AI-Contributed/Feature: 313/313 AI-Contributed/UT: 137/137
This was referenced Sep 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Purpose
Closes #4265.
Part of umbrella #4185; this PR does not close the umbrella.
Stage 2 of the foundation work under #4185, tracked by #4265. Implement ApiVersions negotiation using the capabilities actually registered on the server. Depends on #4264 and its implementation PR #4259.
Brief change log
Incremental scope: 4 files, +207 / -243 lines (450 changed lines including tests).
Tests
mvn -o -pl fluss-kafka verify: 23 unit tests and 1 integration test.git diff --check.git range-diffconfirms unchanged patches after rebasing the stack onto main (b9a1653fa).Dependencies were rebuilt with
mvn -o -pl fluss-kafka -am install -DskipTestson Java 11. This also passed the reactor's Checkstyle, Spotless and RAT checks. The entire repository test suite was not run.API and Format
Changes Kafka ApiVersions responses to reflect registered capabilities. No Fluss public API or storage-format change. Produce, Metadata, and topic administration are not implemented in this stage.
Documentation
The supported-capability boundary is documented in this PR and handler Javadoc.
Stack and review
This PR is a draft until its prerequisite lands. Since its target is Apache main, GitHub's Files changed view currently includes the prerequisite. For this stage alone, review the incremental comparison. Rebase onto the updated main after the prerequisite is merged and before marking ready.
Generative AI disclosure: Codex assisted with implementation, testing, and commit organization. Human review is required before merge.