Fix scheduler cleanup edge cases
This commit is contained in:
@@ -202,13 +202,24 @@ func (w *checkWorker) Wait() {
|
||||
}
|
||||
|
||||
func (w *checkWorker) loop(initial config.CheckConfig) {
|
||||
cfg := initial
|
||||
stoppedNotified := false
|
||||
notifyStopped := func() {
|
||||
if stoppedNotified {
|
||||
return
|
||||
}
|
||||
stoppedNotified = true
|
||||
if w.hooks.OnStopped != nil {
|
||||
w.hooks.OnStopped(cfg.ID)
|
||||
}
|
||||
}
|
||||
defer func() {
|
||||
notifyStopped()
|
||||
if w.onDone != nil {
|
||||
w.onDone(w)
|
||||
}
|
||||
w.wg.Done()
|
||||
}()
|
||||
cfg := initial
|
||||
t := time.NewTimer(time.Hour)
|
||||
stopTimer(t)
|
||||
defer t.Stop()
|
||||
@@ -249,9 +260,6 @@ func (w *checkWorker) loop(initial config.CheckConfig) {
|
||||
}
|
||||
|
||||
if !arm(cfg, true) {
|
||||
if w.hooks.OnStopped != nil {
|
||||
w.hooks.OnStopped(cfg.ID)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
@@ -261,18 +269,12 @@ func (w *checkWorker) loop(initial config.CheckConfig) {
|
||||
stopping = true
|
||||
ctxDone = nil
|
||||
if !running {
|
||||
if w.hooks.OnStopped != nil {
|
||||
w.hooks.OnStopped(cfg.ID)
|
||||
}
|
||||
return
|
||||
}
|
||||
case <-stopCh:
|
||||
stopping = true
|
||||
stopCh = nil
|
||||
if !running {
|
||||
if w.hooks.OnStopped != nil {
|
||||
w.hooks.OnStopped(cfg.ID)
|
||||
}
|
||||
return
|
||||
}
|
||||
case next := <-w.updateCh:
|
||||
@@ -307,9 +309,6 @@ func (w *checkWorker) loop(initial config.CheckConfig) {
|
||||
}
|
||||
}
|
||||
if stopping {
|
||||
if w.hooks.OnStopped != nil {
|
||||
w.hooks.OnStopped(cfg.ID)
|
||||
}
|
||||
return
|
||||
}
|
||||
if runAfterCurrent {
|
||||
|
||||
Reference in New Issue
Block a user