mirror of
https://github.com/kvcache-ai/AgentENV.git
synced 2026-11-05 01:17:36 +00:00
[PR #339] [MERGED] observability: bound the heartbeat channel's connect attempt #361
Labels
No labels
bug
documentation
enhancement
enhancement
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
kvcache-ai/AgentENV#361
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/kvcache-ai/AgentENV/pull/339
Author: @nblintao
Created: 10/2/2026
Status: ✅ Merged
Merged: 10/3/2026
Merged by: @yingdi-shan
Base:
main← Head:fix/heartbeat-connect-timeout📝 Commits (1)
01b6a97observability: bound the heartbeat channel's connect attempt📊 Changes
1 file changed (+9 additions, -1 deletions)
View changed files
📝
src/observability/reporter.rs(+9 -1)📄 Description
The reporter's channel is built with
connect_lazy()and no connect timeout, so when a reconnect's SYN goes unanswered the call is bounded only by the kernel's retry limit — over two minutes at the defaulttcp_syn_retries.GRPC_CALL_TIMEOUTdoes not cover this.Request::set_timeoutwrites agrpc-timeoutheader that the channel'sGrpcTimeoutlayer does enforce client-side, but it starts its timer inService::call, and a call only reaches that afterpoll_readyhas a connection. The connect itself happens insideReconnect::poll_ready, outside any deadline.A node refreshes every one of its sandbox bindings over this channel, so while a connect hangs nothing refreshes them and they expire — the data plane stops being able to route to sandboxes that are running and healthy.
connect_timeout, the value already used for the other gRPC endpoints in this repository (src/image/buildkit.rs).Wrapping the call in
tokio::time::timeoutwould not substitute: dropping the future leaves the attempt in the channel, and later calls queue behind it.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.