Skip to content

feat: add application-level keepalive to prevent ALB idle connection timeouts#1739

Open
JoshVanL wants to merge 2 commits intodapr:masterfrom
JoshVanL:grpc-keepalive-hello
Open

feat: add application-level keepalive to prevent ALB idle connection timeouts#1739
JoshVanL wants to merge 2 commits intodapr:masterfrom
JoshVanL:grpc-keepalive-hello

Conversation

@JoshVanL
Copy link
Contributor

AWS ALBs do not forward HTTP/2 PING frames, causing idle gRPC connections to be closed. This adds a background loop that periodically calls the existing Hello RPC as application-level traffic to keep the connection alive through L7 load balancers.

@JoshVanL JoshVanL requested review from a team as code owners March 11, 2026 18:02
Copilot AI review requested due to automatic review settings March 11, 2026 18:02
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an application-level keepalive mechanism to the workflow worker’s gRPC connection so idle connections aren’t dropped by L7 load balancers (e.g., AWS ALB) that don’t forward HTTP/2 PING frames.

Changes:

  • Start a background keepalive loop alongside the existing server-stream receive loop.
  • Implement KeepaliveLoopAsync to periodically call the existing Hello RPC.
  • Add a debug log event for keepalive failures.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

File Description
src/Dapr.Workflow/Worker/Grpc/GrpcProtocolHandler.cs Starts/stops a background keepalive task and implements periodic Hello calls.
src/Dapr.Workflow/Logging.cs Adds a new generated log message for keepalive failures.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

…timeouts

AWS ALBs do not forward HTTP/2 PING frames, causing idle gRPC connections
to be closed. This adds a background loop that periodically calls the
existing Hello RPC as application-level traffic to keep the connection
alive through L7 load balancers.

Signed-off-by: joshvanl <me@joshvanl.dev>
@JoshVanL JoshVanL force-pushed the grpc-keepalive-hello branch from 1176dd9 to 2b12a4c Compare March 11, 2026 18:15
Signed-off-by: joshvanl <me@joshvanl.dev>
@WhitWaldo
Copy link
Contributor

Do note that I just merged a PR to support xUnit v3 so your unit/integration tests may need a refresh.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants