Skip to content

fix: prevent API requests from hanging after idle periods#3011

Merged
talos-bot merged 1 commit into
siderolabs:mainfrom
utkuozdemir:fix/disable-grpc-idle-on-loopback-conns
Jun 19, 2026
Merged

fix: prevent API requests from hanging after idle periods#3011
talos-bot merged 1 commit into
siderolabs:mainfrom
utkuozdemir:fix/disable-grpc-idle-on-loopback-conns

Conversation

@utkuozdemir

Copy link
Copy Markdown
Member

Omni could stop responding to all API requests after a period without API activity, leaving the web UI on a blank page while static assets still loaded, and required a restart to recover.

The connections that carry the API gateway and internal proxy traffic run in-process and relied on gRPC idle mode, which tears down and later re-establishes a connection that has been inactive. A bug in gRPC could leave such a connection permanently stuck once it went idle, so every subsequent request blocked forever.

Idle mode provides no benefit for these connections because they are in-process and live for the whole lifetime of the process, so disable it. This avoids the stuck connection and also removes the latency of re-establishing it on the first request after a quiet period.

A fix for the underlying gRPC issue has been submitted upstream in grpc/grpc-go#9191, but disabling idle mode here is the correct configuration regardless.

Omni could stop responding to all API requests after a period without API activity, leaving the web UI on a blank page while static assets still loaded, and required a restart to recover.

The connections that carry the API gateway and internal proxy traffic run in-process and relied on gRPC idle mode, which tears down and later re-establishes a connection that has been inactive. A bug in gRPC could leave such a connection permanently stuck once it went idle, so every subsequent request blocked forever.

Idle mode provides no benefit for these connections because they are in-process and live for the whole lifetime of the process, so disable it. This avoids the stuck connection and also removes the latency of re-establishing it on the first request after a quiet period.

A fix for the underlying gRPC issue has been submitted upstream in grpc/grpc-go#9191, but disabling idle mode here is the correct configuration regardless.

Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
@utkuozdemir

Copy link
Copy Markdown
Member Author

/m

@talos-bot talos-bot merged commit 17b2b30 into siderolabs:main Jun 19, 2026
36 checks passed
@github-project-automation github-project-automation Bot moved this from Approved to Done in Planning Jun 19, 2026
@utkuozdemir utkuozdemir deleted the fix/disable-grpc-idle-on-loopback-conns branch June 19, 2026 22:02
talos-bot pushed a commit to siderolabs/talemu that referenced this pull request Jun 20, 2026
The local backend talks to the in-process apid server over an in-memory loopback transport, which has no use for gRPC idle mode since there is nothing to reclaim by going idle. This mirrors the same change made in Omni in siderolabs/omni#3011, and also bypasses a gRPC bug that can leave an idling connection permanently stuck.

Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

3 participants