Skip to content

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

Merged
WhitWaldo merged 3 commits intodapr:masterfrom
JoshVanL:grpc-keepalive-hello
Apr 5, 2026
Merged

feat: add application-level keepalive to prevent ALB idle connection timeouts#1739
WhitWaldo merged 3 commits intodapr:masterfrom
JoshVanL:grpc-keepalive-hello

Conversation

@JoshVanL
Copy link
Copy Markdown
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
Copy Markdown

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.

Comment thread src/Dapr.Workflow/Worker/Grpc/GrpcProtocolHandler.cs Outdated
Comment thread src/Dapr.Workflow/Worker/Grpc/GrpcProtocolHandler.cs Outdated
Comment thread src/Dapr.Workflow/Worker/Grpc/GrpcProtocolHandler.cs Outdated
Comment thread src/Dapr.Workflow/Logging.cs Outdated
…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
Copy Markdown
Contributor

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

Copy link
Copy Markdown
Contributor

@WhitWaldo WhitWaldo left a comment

Choose a reason for hiding this comment

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

Looks good - thank you for putting this together!

@WhitWaldo WhitWaldo merged commit 53af55c into dapr:master Apr 5, 2026
278 of 279 checks passed
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