@@ -13,7 +13,8 @@ var defaultNTPServers = []string{
13
13
"time.aws.com" ,
14
14
"time.windows.com" ,
15
15
"time.google.com" ,
16
- "162.159.200.123" , // time.cloudflare.com
16
+ "162.159.200.123" , // time.cloudflare.com IPv4
17
+ "2606:4700:f1::123" , // time.cloudflare.com IPv6
17
18
"0.pool.ntp.org" ,
18
19
"1.pool.ntp.org" ,
19
20
"2.pool.ntp.org" ,
@@ -57,6 +58,13 @@ func (t *TimeSync) queryMultipleNTP(servers []string, timeout time.Duration) (no
57
58
58
59
// query the server
59
60
now , response , err := queryNtpServer (server , timeout )
61
+ if err != nil {
62
+ scopedLogger .Warn ().
63
+ Str ("error" , err .Error ()).
64
+ Msg ("failed to query NTP server" )
65
+ results <- nil
66
+ return
67
+ }
60
68
61
69
// set the last RTT
62
70
metricNtpServerLastRTT .WithLabelValues (
@@ -76,32 +84,33 @@ func (t *TimeSync) queryMultipleNTP(servers []string, timeout time.Duration) (no
76
84
strconv .Itoa (int (response .Precision )),
77
85
).Set (1 )
78
86
79
- if err == nil {
80
- // increase success count
81
- metricNtpTotalSuccessCount .Inc ()
82
- metricNtpSuccessCount .WithLabelValues (server ).Inc ()
83
-
84
- scopedLogger .Info ().
85
- Str ("time" , now .Format (time .RFC3339 )).
86
- Str ("reference" , response .ReferenceString ()).
87
- Str ("rtt" , response .RTT .String ()).
88
- Str ("clockOffset" , response .ClockOffset .String ()).
89
- Uint8 ("stratum" , response .Stratum ).
90
- Msg ("NTP server returned time" )
91
- results <- & ntpResult {
92
- now : now ,
93
- offset : & response .ClockOffset ,
94
- }
95
- } else {
96
- scopedLogger .Warn ().
97
- Str ("error" , err .Error ()).
98
- Msg ("failed to query NTP server" )
87
+ // increase success count
88
+ metricNtpTotalSuccessCount .Inc ()
89
+ metricNtpSuccessCount .WithLabelValues (server ).Inc ()
90
+
91
+ scopedLogger .Info ().
92
+ Str ("time" , now .Format (time .RFC3339 )).
93
+ Str ("reference" , response .ReferenceString ()).
94
+ Str ("rtt" , response .RTT .String ()).
95
+ Str ("clockOffset" , response .ClockOffset .String ()).
96
+ Uint8 ("stratum" , response .Stratum ).
97
+ Msg ("NTP server returned time" )
98
+ results <- & ntpResult {
99
+ now : now ,
100
+ offset : & response .ClockOffset ,
99
101
}
100
102
}(server )
101
103
}
102
104
103
- result := <- results
104
- return result .now , result .offset
105
+ for range servers {
106
+ result := <- results
107
+ if result == nil {
108
+ continue
109
+ }
110
+ now , offset = result .now , result .offset
111
+ return
112
+ }
113
+ return
105
114
}
106
115
107
116
func queryNtpServer (server string , timeout time.Duration ) (now * time.Time , response * ntp.Response , err error ) {
0 commit comments