Preserve streamed responses through Envoy - #49
Draft
DavidIlie wants to merge 1 commit into
Draft
Conversation
This was referenced Aug 12, 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.
What
timeouts.request: 0son every application rule emitted for the generic Envoy Gateway targetWhy
Envoy applies a 15-second total route timeout by default. That deadline remains active until the entire response completes, so healthy Next.js Route Handler streams, RSC, and SSE can be truncated even while bytes are flowing.
Gateway API defines
0sas disabled. The generic target should remove that whole-response deadline and retain the separate bounds that match the actual failure modes: pool time-to-headers and routemaxDuration, plus Envoy's stream-idle timeout.How
renderHTTPRouteaccepts a provider-owneddisableRequestTimeoutswitch. The generic provider opts in and the template injects the literal timeout into every generated application rule. The literal is deliberately not exposed as arbitrary user configuration, avoiding another duration-validation and YAML-injection surface.Stack
This PR remains draft while #47 is draft.
Scope
This changes only the generic Envoy Gateway target. It does not add or change GKE
GCPBackendPolicy/connection-draining configuration; that provider-specific concern remains explicitly out of scope, as noted on #47.Testing
npm test: 2,901 passed, 20 skippednpx tsc --noEmitnpm run lintnpm run fmt:checknpm run buildgit diff --check