[gateway] Add the Gateway runtime, common HTTP layer, lifecycle, and test infrastructure - #3963
Open
beryllw wants to merge 7 commits into
Open
[gateway] Add the Gateway runtime, common HTTP layer, lifecycle, and test infrastructure#3963beryllw wants to merge 7 commits into
beryllw wants to merge 7 commits into
Conversation
beryllw
force-pushed
the
gateway-g1-foundation
branch
2 times, most recently
from
August 12, 2026 11:59
831c85f to
fc487d0
Compare
Introduces fluss-gateway as an independent Cargo workspace with library and executable entry points: strict configuration with stable exit codes, the shared error envelope, request-id/body-size/deadline middleware, the FIP-49 GET /health endpoint, REST and metrics listeners, task supervision with SIGTERM draining, and the OpenAPI 3.1 document generated from the typed router. Co-authored-by: gstamatakis95 <126914070+gstamatakis95@users.noreply.github.com>
…uster harness Covers the shared HTTP contract over a real listener, the compiled binary's startup, health, SIGTERM draining and exit codes, and a self-test of the fixed-version dockerized Fluss cluster harness that later capabilities reuse for their end-to-end suites. Co-authored-by: gstamatakis95 <126914070+gstamatakis95@users.noreply.github.com>
Runs the gateway workspace's build, unit tests, license headers, formatting, clippy and rustdoc, checks the checked-in OpenAPI document for drift and validates it externally, and runs the end-to-end suite in a job that fails rather than skipping silently when a selected scenario cannot start. Co-authored-by: gstamatakis95 <126914070+gstamatakis95@users.noreply.github.com>
beryllw
force-pushed
the
gateway-g1-foundation
branch
from
August 12, 2026 12:11
fc487d0 to
f6e94e7
Compare
… rename the harness job Co-authored-by: gstamatakis95 <126914070+gstamatakis95@users.noreply.github.com>
beryllw
marked this pull request as ready for review
August 12, 2026 14:32
… artifact release
…ines against overflow
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
Linked issue: close #3958
First PR of FIP-49: the Gateway runtime and HTTP foundation the later Gateway APIs build on. Authentication, the Fluss backend, and the data APIs come in follow-up issues, so this PR has no Fluss runtime dependency yet.
Distilled from the FIP-49 PoC, whose foundation was written by @gstamatakis95 and is credited via
Co-authored-by.Brief change log
fluss-gateway/as an independent Cargo workspace, library plus executable.gateway.yamlof flat dotted keys, env and CLI overrides, strict validation, stable exit codes (2 = config, 1 = serving, 0 = clean drain).GET /healthreturning{status, uptime_ms}, the one health endpoint FIP-49 defines; it keeps answering while the process drains and guarded routes answer 503.SIGTERMdraining, failure propagation.Tests
61 unit tests (config, error taxonomy, middleware, drain deadlines, OpenAPI document), the HTTP contract over a real listener, the compiled binary's startup/health/
SIGTERM/exit codes, and a harness self-test that starts the fixed-version dockerized Fluss cluster. CI runs the E2E job so it fails rather than skips when a selected scenario cannot start.API and Format
New endpoints
GET /healthandGET /v1/openapi.json, described by the checked-in OpenAPI document. No change to existing APIs or storage formats.Documentation
Module-level rustdoc, enforced by
cargo doc -D warnings. User-facing documentation is tracked by the FIP-49 documentation issue.