From 027d0c204d91635910c2ccddde557d99337413d2 Mon Sep 17 00:00:00 2001 From: Ryan Chou <88779759+ryanchou1994@users.noreply.github.com> Date: Sun, 6 Sep 2026 01:09:25 +0800 Subject: [PATCH] fix(agent): extend WebSocket deadline for slow collections (#2297) The agent resets its WebSocket deadline to 70s, but the hub's default collection interval is 60s, so a single slow collection cycle is enough to trip the deadline and start a reconnect loop even though the hub is still serving the agent. Raise the deadline to 120s and add a regression test that keeps the slow-collection window from being lowered below two minutes. Verified with go test -tags=testing ./agent (focused tests and the full agent suite minus the container-only TestDirectoryIsWritable case), go vet, the agent build and gofmt. Closes #2294 --- agent/client.go | 4 +++- agent/client_test.go | 8 ++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/agent/client.go b/agent/client.go index 0dc80fa6..9b1351f6 100644 --- a/agent/client.go +++ b/agent/client.go @@ -25,7 +25,9 @@ import ( ) const ( - wsDeadline = 70 * time.Second + // Keep the connection alive long enough for a slow collection cycle to + // finish before the hub considers the agent disconnected. + wsDeadline = 120 * time.Second ) type caCertFileError struct { diff --git a/agent/client_test.go b/agent/client_test.go index a4598fc1..97cb6654 100644 --- a/agent/client_test.go +++ b/agent/client_test.go @@ -700,3 +700,11 @@ func TestGetToken(t *testing.T) { assert.Equal(t, expectedToken, token, "Whitespace should be stripped from token file content") }) } + +func TestWebSocketDeadlineCoversSlowCollection(t *testing.T) { + const minimumDeadline = 120 * time.Second + + if wsDeadline < minimumDeadline { + t.Fatalf("WebSocket deadline %s is shorter than the slow-collection window of %s", wsDeadline, minimumDeadline) + } +}