From 8cf7ab589bc2657eb3b4dadd113815b900a28e35 Mon Sep 17 00:00:00 2001 From: Dean Sheather Date: Wed, 2 Aug 2023 06:42:53 +0000 Subject: [PATCH] fix: avoid agent runLoop exiting due to ws ping --- agent/agent.go | 4 +++- codersdk/agentsdk/agentsdk.go | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/agent/agent.go b/agent/agent.go index 863af7b59fbbb..52c423787fb44 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -236,7 +236,9 @@ func (a *agent) runLoop(ctx context.Context) { if err == nil { continue } - if errors.Is(err, context.Canceled) { + if ctx.Err() != nil { + // Context canceled errors may come from websocket pings, so we + // don't want to use `errors.Is(err, context.Canceled)` here. return } if a.isClosed() { diff --git a/codersdk/agentsdk/agentsdk.go b/codersdk/agentsdk/agentsdk.go index 7f66c01bc864b..e2189e1cc53d2 100644 --- a/codersdk/agentsdk/agentsdk.go +++ b/codersdk/agentsdk/agentsdk.go @@ -204,7 +204,7 @@ func (c *Client) DERPMapUpdates(ctx context.Context) (<-chan DERPMapUpdate, io.C defer close(updates) defer close(updatesClosed) defer cancelFunc() - defer conn.Close(websocket.StatusGoingAway, "Listen closed") + defer conn.Close(websocket.StatusGoingAway, "DERPMapUpdates closed") for { var update DERPMapUpdate err := dec.Decode(&update.DERPMap) @@ -240,7 +240,7 @@ func (c *Client) DERPMapUpdates(ctx context.Context) (<-chan DERPMapUpdate, io.C closeFunc: func() error { cancelFunc() <-pingClosed - _ = conn.Close(websocket.StatusGoingAway, "Listen closed") + _ = conn.Close(websocket.StatusGoingAway, "DERPMapUpdates closed") <-updatesClosed return nil },