From 2c75823a620cf7a57050bd3f0d4801f00db5a287 Mon Sep 17 00:00:00 2001 From: ChristopherHX Date: Wed, 3 Dec 2025 12:04:52 +0100 Subject: [PATCH 1/3] Handle reconnect failure in websocket gracefully --- protocol/logger/job_logger.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/protocol/logger/job_logger.go b/protocol/logger/job_logger.go index f15fab9..7865b01 100644 --- a/protocol/logger/job_logger.go +++ b/protocol/logger/job_logger.go @@ -79,17 +79,25 @@ func (logger *WebsocketLivelogger) Connect() error { ctx, cancel := context.WithTimeout(context.Background(), websocketDialTimeout) defer cancel() //nolint:bodyclose // websocket.Dial doesn't return an HTTP response body to close - logger.ws, _, err = websocket.Dial(ctx, feedStreamURL.String(), &websocket.DialOptions{ + ws, _, err := websocket.Dial(ctx, feedStreamURL.String(), &websocket.DialOptions{ HTTPClient: logger.Connection.HTTPClient(), HTTPHeader: http.Header{ "Authorization": []string{"Bearer " + logger.Connection.Token}, "User-Agent": []string{"github-act-runner/1.0.0"}, }, }) + // While reconnecting never assign this to null + if ws != nil { + logger.ws = ws + } return err } func (logger *WebsocketLivelogger) SendLog(lines *protocol.TimelineRecordFeedLinesWrapper) error { + // Do not try to send if something is wrong + if logger.ws == nil { + return fmt.Errorf("missing websocket connection") + } ctx, cancel := context.WithTimeout(context.Background(), websocketMessageTimeout) defer cancel() return wsjson.Write(ctx, logger.ws, lines) @@ -181,7 +189,7 @@ func (logger *WebsocketLiveloggerWithFallback) SendLog(wrapper *protocol.Timelin type BufferedLiveLogger struct { LiveLogger logchan chan *protocol.TimelineRecordFeedLinesWrapper - logfinished chan struct{} + logfinished chan struct{} } func (logger *BufferedLiveLogger) sendLogs(logchan chan *protocol.TimelineRecordFeedLinesWrapper, logfinished chan struct{}) { From 152dcbb625350272357fa2e4f9d5cd336372ed7d Mon Sep 17 00:00:00 2001 From: ChristopherHX Date: Wed, 3 Dec 2025 12:05:47 +0100 Subject: [PATCH 2/3] r --- protocol/logger/job_logger.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protocol/logger/job_logger.go b/protocol/logger/job_logger.go index 7865b01..76b5ea5 100644 --- a/protocol/logger/job_logger.go +++ b/protocol/logger/job_logger.go @@ -189,7 +189,7 @@ func (logger *WebsocketLiveloggerWithFallback) SendLog(wrapper *protocol.Timelin type BufferedLiveLogger struct { LiveLogger logchan chan *protocol.TimelineRecordFeedLinesWrapper - logfinished chan struct{} + logfinished chan struct{} } func (logger *BufferedLiveLogger) sendLogs(logchan chan *protocol.TimelineRecordFeedLinesWrapper, logfinished chan struct{}) { From 72bf558e2efd6da06d4121f7fa89dbd24e1d1bad Mon Sep 17 00:00:00 2001 From: ChristopherHX Date: Wed, 3 Dec 2025 12:10:34 +0100 Subject: [PATCH 3/3] remove old tags --- runnersurvey.go | 1 - runnersurveyunsupported.go | 1 - 2 files changed, 2 deletions(-) diff --git a/runnersurvey.go b/runnersurvey.go index 28e77e3..14e6dc2 100644 --- a/runnersurvey.go +++ b/runnersurvey.go @@ -1,5 +1,4 @@ //go:build linux || darwin || windows || openbsd || netbsd || freebsd -// +build linux darwin windows openbsd netbsd freebsd package main diff --git a/runnersurveyunsupported.go b/runnersurveyunsupported.go index c331012..7319992 100644 --- a/runnersurveyunsupported.go +++ b/runnersurveyunsupported.go @@ -1,5 +1,4 @@ //go:build !linux && !darwin && !windows && !openbsd && !netbsd && !freebsd -// +build !linux,!darwin,!windows,!openbsd,!netbsd,!freebsd package main