@@ -250,26 +250,27 @@ func (a *agent) Info(ctx context.Context) (*api.Info, error) {
250
250
const deltaLimit = 2 * time .Second
251
251
252
252
func (a * agent ) fixSystemTimeSkew () {
253
- ticker := time .NewTicker (10 * time .Second )
254
- defer ticker .Stop ()
255
- for now := range ticker .C {
256
- rtc , err := timesync .GetRTCTime ()
257
- if err != nil {
258
- logrus .Warnf ("fixSystemTimeSkew: lookup error: %s" , err .Error ())
259
- continue
260
- }
261
- d := rtc .Sub (now )
262
- logrus .Debugf ("fixSystemTimeSkew: rtc=%s systime=%s delta=%s" ,
263
- rtc .Format (time .RFC3339 ), now .Format (time .RFC3339 ), d )
264
- if d > deltaLimit || d < - deltaLimit {
265
- err = timesync .SetSystemTime (rtc )
253
+ for {
254
+ ticker := time .NewTicker (10 * time .Second )
255
+ for now := range ticker .C {
256
+ rtc , err := timesync .GetRTCTime ()
266
257
if err != nil {
267
- logrus .Warnf ("fixSystemTimeSkew: set system clock error: %s" , err .Error ())
258
+ logrus .Warnf ("fixSystemTimeSkew: lookup error: %s" , err .Error ())
268
259
continue
269
260
}
270
- logrus .Infof ("fixSystemTimeSkew: system time synchronized with rtc" )
271
- break
261
+ d := rtc .Sub (now )
262
+ logrus .Debugf ("fixSystemTimeSkew: rtc=%s systime=%s delta=%s" ,
263
+ rtc .Format (time .RFC3339 ), now .Format (time .RFC3339 ), d )
264
+ if d > deltaLimit || d < - deltaLimit {
265
+ err = timesync .SetSystemTime (rtc )
266
+ if err != nil {
267
+ logrus .Warnf ("fixSystemTimeSkew: set system clock error: %s" , err .Error ())
268
+ continue
269
+ }
270
+ logrus .Infof ("fixSystemTimeSkew: system time synchronized with rtc" )
271
+ break
272
+ }
272
273
}
274
+ ticker .Stop ()
273
275
}
274
- go a .fixSystemTimeSkew ()
275
276
}
0 commit comments