From d8a8819d4f060facb0f1769cb811a810b4934fa7 Mon Sep 17 00:00:00 2001 From: Colin Adler Date: Fri, 6 Oct 2023 16:15:58 +0000 Subject: [PATCH] chore: fix servertailnet test flake https://github.com/coder/coder/actions/runs/6424100765/job/17444018788?pr=10083#step:5:771 --- coderd/tailnet.go | 4 ++++ tailnet/conn.go | 8 +++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/coderd/tailnet.go b/coderd/tailnet.go index ca2a86d27f71e..c5b2345728606 100644 --- a/coderd/tailnet.go +++ b/coderd/tailnet.go @@ -229,6 +229,10 @@ func (s *ServerTailnet) watchAgentUpdates() { err := s.conn.UpdateNodes(nodes, false) if err != nil { + if xerrors.Is(err, tailnet.ErrConnClosed) { + s.logger.Warn(context.Background(), "tailnet conn closed, exiting watchAgentUpdates", slog.Error(err)) + return + } s.logger.Error(context.Background(), "update node in server tailnet", slog.Error(err)) return } diff --git a/tailnet/conn.go b/tailnet/conn.go index f53040a48cb27..8808fab775d78 100644 --- a/tailnet/conn.go +++ b/tailnet/conn.go @@ -47,6 +47,8 @@ import ( "github.com/coder/coder/v2/cryptorand" ) +var ErrConnClosed = xerrors.New("connection closed") + const ( WorkspaceAgentSSHPort = 1 WorkspaceAgentReconnectingPTYPort = 2 @@ -496,7 +498,7 @@ func (c *Conn) UpdateNodes(nodes []*Node, replacePeers bool) error { defer c.mutex.Unlock() if c.isClosed() { - return xerrors.New("connection closed") + return ErrConnClosed } status := c.Status() @@ -590,7 +592,7 @@ func (c *Conn) RemovePeer(selector PeerSelector) (deleted bool, err error) { defer c.mutex.Unlock() if c.isClosed() { - return false, xerrors.New("connection closed") + return false, ErrConnClosed } deleted = false @@ -919,7 +921,7 @@ func (c *Conn) Listen(network, addr string) (net.Listener, error) { c.mutex.Lock() if c.isClosed() { c.mutex.Unlock() - return nil, xerrors.New("closed") + return nil, ErrConnClosed } if c.listeners == nil { c.listeners = map[listenKey]*listener{}