From 27acff1b69a350579748a84c782029e5cfecdd9c Mon Sep 17 00:00:00 2001 From: Siyuan Miao Date: Fri, 13 Jun 2025 00:33:43 +0200 Subject: [PATCH] fix(timesync): queryMultipleHttp hanging if all servers are unreachable --- internal/timesync/http.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/internal/timesync/http.go b/internal/timesync/http.go index 3a51463..ff0668a 100644 --- a/internal/timesync/http.go +++ b/internal/timesync/http.go @@ -95,16 +95,27 @@ func (t *TimeSync) queryMultipleHttp(urls []string, timeout time.Duration) (now } else if errors.Is(err, context.Canceled) { metricHttpCancelCount.WithLabelValues(url).Inc() metricHttpTotalCancelCount.Inc() + results <- nil } else { scopedLogger.Warn(). Str("error", err.Error()). Int("status", status). Msg("failed to query HTTP server") + results <- nil } }(url) } - return <-results + for range urls { + result := <-results + if result == nil { + continue + } + now = result + return + } + + return } func queryHttpTime(