Repository navigation
Conversation
This was referenced Sep 9, 2026
gyang94
force-pushed
the
codex/kafka-api-versions
branch
from
September 17, 2026 02:38
0ea02c7 to
5742b36
Compare
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
Catch failures while mapping asynchronous handler results so the dispatcher future completes exceptionally instead of remaining pending. Cover handler futures that fail before and after dispatch registers its callback. Validated with Java 11: Maven reactor build and 17 targeted Kafka tests, including Checkstyle, Spotless, and license checks. Co-Authored-By: Codex <noreply@openai.com> AI-Model: gpt-6 AI-Contributed/Feature: 27/27 AI-Contributed/UT: 28/28
Read netty.connection.max-idle-time when building the Kafka pipeline, keeping the existing IdleStateHandler and ALL_IDLE close behavior. Cover default, custom, and disabled timeouts, legacy option isolation, and idle connection closure through a real Kafka listener. Validated with Java 11 using this worktree's reactor dependencies: mvn -o -pl fluss-kafka -am verify -Dtest=Kafka*Test,Kafka*ITCase -Dsurefire.failIfNoSpecifiedTests=false All 25 Kafka cases passed in both test executions; Checkstyle, Spotless and RAT checks passed. The new configuration regression cases failed on the previous implementation before the wiring change. Co-Authored-By: Codex <noreply@openai.com> AI-Model: gpt-6 AI-Contributed/Feature: 2/2 AI-Contributed/UT: 175/175
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
Exercise future-version decoding, v0 error serialization, correlation IDs, unknown tagged fields, buffer release, and renegotiation on one connection. Verify registry-defined ranges, hidden APIs, ordering, and invalid client software fields across the supported ApiVersions schemas. Validated with Java 11 reactor clean verify: 37 unit tests and 2 integration tests passed, with Checkstyle, Spotless, RAT, and git diff checks. Co-Authored-By: Codex <noreply@openai.com> AI-Model: gpt-6 AI-Contributed/Feature: 0/0 AI-Contributed/UT: 238/238
gyang94
force-pushed
the
codex/kafka-api-versions
branch
from
October 10, 2026 13:19
5742b36 to
546d8e5
Compare
gyang94
marked this pull request as ready for review
October 11, 2026 14:58
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.
Implement ApiVersions negotiation using the capabilities actually registered on the server, and connect the Kafka request entry point to the asynchronous dispatcher. Depends on #4264 and its implementation PR #4259.
Brief change log
Incremental scope relative to PR01: 5 files, +394 / -258 lines, including tests.
Tests
Validated with Java 11 in this worktree, using reactor dependencies built from the same source tree:
mvn -o -pl fluss-kafka -am clean verify '-Dtest=Kafka*Test,ApiVersionsHandlerTest,Kafka*ITCase' -Dsurefire.failIfNoSpecifiedTests=false: 37 unit tests and 2 integration tests passed, with zero failures, errors, or skips. Both Surefire lifecycle executions ran the selected set of 39 distinct cases.git diff --checkpassed.git range-diffconfirms that the original ApiVersions patch was preserved when rebasing onto PR01274c00d7af9f0347adeb9372e5f67b41222eed2e; the additional commit strengthens regression coverage.The entire repository test suite and the full producer-client version matrix were not run.
API and Format
ApiVersions reports registered capabilities. No Fluss public API or storage-format change. Produce, Metadata, authentication, and topic administration are not implemented in this stage.
Documentation
The supported-capability boundary is documented in this PR and the handler Javadoc.
Stack and review
This PR remains a draft until its prerequisite lands. The direct base is PR01
274c00d7af9f0347adeb9372e5f67b41222eed2e; this PR's head is546d8e5dae253dab39f02c64ac5b94e2e6f82f57.Because the target is Apache main, GitHub's Files changed view 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.