fix(gateway-interceptors): configure connect timeout and HTTP/2 keepalive on interceptor gRPC channel - #2618
Open
letv1nnn wants to merge 1 commit into
Open
Conversation
letv1nnn
requested review from
a team,
derekwaynecarr,
maxamillion and
mrunalp
as code owners
August 5, 2026 12:39
Collaborator
|
/ok to test 81b2589 |
…live on interceptor gRPC channel Signed-off-by: Artem Lytvyn <alytvyn@redhat.com>
letv1nnn
force-pushed
the
fix-interceptor-channel-keepalive
branch
from
August 6, 2026 09:09
81b2589 to
c2ce5fa
Compare
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.
Summary
The interceptor gRPC channel was dialed bare —
Endpoint::from_shared(...).connect()with no connect timeout and no HTTP/2 keepalive. These channels are long-lived:ExecutionPlan::loaddials once at startup and the resultingChannelis cloned into everyBindingPlanandGatewayInterceptorProfileSourcefor the process lifetime. With no keepalive, an idle-reaping hop, load-balancer timeout, interceptor redeploy, or GOAWAY silently invalidated the connection, and the failure only surfaced on the next interceptor evaluation. With no connect timeout, an unreachable interceptor host could hang on the OS default TCP connect timeout.This applies the repo-standard channel tuning (matching
openshell-coreandopenshell-sdk) to both the TCP and unix-socket interceptor channels, so idle connections survive intermediary idle timeouts, dead peers are detected proactively, and dials are bounded.Related Issue
Closes #2612.
Changes
tune_endpointhelper incrates/openshell-gateway-interceptors/src/plan.rsapplyingconnect_timeout(10s),http2_keep_alive_interval(10s),keep_alive_while_idle(true),keep_alive_timeout(10s), andhttp2_adaptive_window(true).connect_endpoint(TCP) andconnect_unix_endpoint(unix socket) throughtune_endpointinstead of dialing a bare endpoint.Testing
mise run pre-commitpassesChecklist