From c13e1e11c5dbc0d11befdf096bb5a982c9b93a58 Mon Sep 17 00:00:00 2001 From: Qishuai Liu Date: Thu, 8 May 2025 11:31:40 +0900 Subject: [PATCH] fix(ntp): make sure queryMultipleNTP finish if all servers failed --- internal/timesync/ntp.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/internal/timesync/ntp.go b/internal/timesync/ntp.go index 33340ed..d45112c 100644 --- a/internal/timesync/ntp.go +++ b/internal/timesync/ntp.go @@ -62,6 +62,7 @@ func (t *TimeSync) queryMultipleNTP(servers []string, timeout time.Duration) (no scopedLogger.Warn(). Str("error", err.Error()). Msg("failed to query NTP server") + results <- nil return } @@ -101,8 +102,15 @@ func (t *TimeSync) queryMultipleNTP(servers []string, timeout time.Duration) (no }(server) } - result := <-results - return result.now, result.offset + for range servers { + result := <-results + if result == nil { + continue + } + now, offset = result.now, result.offset + return + } + return } func queryNtpServer(server string, timeout time.Duration) (now *time.Time, response *ntp.Response, err error) {