From 7cb2aaa8a53680702bb10cccf569315b46a30549 Mon Sep 17 00:00:00 2001 From: Frederick Robinson Date: Sat, 18 Nov 2023 06:44:46 -0800 Subject: [PATCH] feat(irc): log connection errors (#1239) * add logline for failed connection * modify logging, change debug -> error * don't surface "client called Quit" errors * irc: don't retry Connect() while stopped * fix issue number * don't unlock until state-change complete * Revert "don't unlock until state-change complete" This reverts commit bf107db99bc2758b729a5995c63067f8fdf16aec. --------- Co-authored-by: Shivaram Lingamneni --- internal/irc/handler.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/internal/irc/handler.go b/internal/irc/handler.go index 075f552..52cd705 100644 --- a/internal/irc/handler.go +++ b/internal/irc/handler.go @@ -25,6 +25,10 @@ import ( "github.com/sasha-s/go-deadlock" ) +var ( + clientManuallyDisconnected = retry.Unrecoverable(errors.New("IRC client was manually disconnected")) +) + type channelHealth struct { m deadlock.RWMutex @@ -219,7 +223,17 @@ func (h *Handler) Run() error { func() error { h.log.Debug().Msgf("connect attempt %d", connectAttempts) + // #1239: don't retry if the user manually disconnected with Stop() + h.m.RLock() + manuallyDisconnected := h.manuallyDisconnected + h.m.RUnlock() + + if manuallyDisconnected { + return clientManuallyDisconnected + } + if err := h.client.Connect(); err != nil { + h.log.Error().Err(err).Msg("client encountered connection error") connectAttempts++ return err }