From 1d366cbab73e34d423189e66cdab19ce3cf92e59 Mon Sep 17 00:00:00 2001 From: lou Date: Fri, 7 Feb 2025 15:49:06 +0800 Subject: [PATCH] update after review Signed-off-by: lou --- scheduler.go | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/scheduler.go b/scheduler.go index dc29e8d..fd8fac2 100644 --- a/scheduler.go +++ b/scheduler.go @@ -238,9 +238,20 @@ func (s *scheduler) stopScheduler() { for _, j := range s.jobs { j.stop() } - for id, j := range s.jobs { + for _, j := range s.jobs { <-j.ctx.Done() - + } + var err error + if s.started { + t := time.NewTimer(s.exec.stopTimeout + 1*time.Second) + select { + case err = <-s.exec.done: + t.Stop() + case <-t.C: + err = ErrStopExecutorTimedOut + } + } + for id, j := range s.jobs { oldCtx := j.ctx if j.parentCtx == nil { j.parentCtx = s.shutdownCtx @@ -254,16 +265,7 @@ func (s *scheduler) stopScheduler() { s.jobs[id] = j } - var err error - if s.started { - t := time.NewTimer(s.exec.stopTimeout + 1*time.Second) - select { - case err = <-s.exec.done: - t.Stop() - case <-t.C: - err = ErrStopExecutorTimedOut - } - } + s.stopErrCh <- err s.started = false s.logger.Debug("gocron: scheduler stopped")