fix health check ticker interval and close

This commit is contained in:
jebbs 2022-10-17 10:43:46 +08:00
parent c90e7cb266
commit 8d2f261105

View File

@ -27,6 +27,8 @@ type HealthCheck struct {
options *option.HealthCheckSettings
results map[string]*result
close chan struct{}
}
type result struct {
@ -73,15 +75,16 @@ func (h *HealthCheck) Start() error {
if h.ticker != nil {
return nil
}
interval := time.Duration(h.options.Interval) * time.Duration(h.options.SamplingCount)
ticker := time.NewTicker(interval)
h.close = make(chan struct{})
ticker := time.NewTicker(time.Duration(h.options.Interval))
h.ticker = ticker
go func() {
for {
h.CheckNodes()
_, ok := <-ticker.C
if !ok {
break
select {
case <-h.close:
return
case <-ticker.C:
h.CheckNodes()
}
}
}()
@ -96,6 +99,7 @@ func (h *HealthCheck) Close() error {
h.ticker.Stop()
h.ticker = nil
}
close(h.close)
return nil
}