feat: add application-level keepalive to prevent ALB idle connection timeouts#1695
feat: add application-level keepalive to prevent ALB idle connection timeouts#1695JoshVanL wants to merge 2 commits intodapr:masterfrom
Conversation
There was a problem hiding this comment.
Pull request overview
Adds an application-level gRPC keepalive loop in the Durable Task worker to reduce the chance of idle HTTP/2 connections being closed (e.g., by AWS ALBs) while the worker is waiting on the long-lived getWorkItems stream.
Changes:
- Introduces a scheduled keepalive task that periodically calls a unary RPC (
hello) on the sidecar. - Starts the keepalive loop after opening the work-item stream and stops it on disconnect/retry and on
close(). - Adds supporting constants/imports and scheduler lifecycle management.
💡 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.
durabletask-client/src/main/java/io/dapr/durabletask/DurableTaskGrpcWorker.java
Outdated
Show resolved
Hide resolved
durabletask-client/src/main/java/io/dapr/durabletask/DurableTaskGrpcWorker.java
Outdated
Show resolved
Hide resolved
durabletask-client/src/main/java/io/dapr/durabletask/DurableTaskGrpcWorker.java
Outdated
Show resolved
Hide resolved
durabletask-client/src/main/java/io/dapr/durabletask/DurableTaskGrpcWorker.java
Outdated
Show resolved
Hide resolved
…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>
2bbf43a to
bfdb4a4
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #1695 +/- ##
============================================
- Coverage 79.53% 79.51% -0.02%
- Complexity 2193 2194 +1
============================================
Files 237 237
Lines 6577 6577
Branches 730 730
============================================
- Hits 5231 5230 -1
- Misses 990 992 +2
+ Partials 356 355 -1 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
ey @JoshVanL why is this inside the durable worker? I think it does not belong there but on the class we build the channel so all component will benefit from it not just the worflow |
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.