From a8a9b493533f697c63fbc4bba2bfe3eecd5cdd2c Mon Sep 17 00:00:00 2001 From: rfyiamcool Date: Sun, 7 May 2023 12:43:32 +0800 Subject: [PATCH] fix: deadlock for blocking channel --- scheduler.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scheduler.go b/scheduler.go index 11711478..5ab22f80 100644 --- a/scheduler.go +++ b/scheduler.go @@ -868,10 +868,10 @@ func (s *Scheduler) Stop() { } func (s *Scheduler) stop() { - s.setRunning(false) s.stopJobs(s.jobs) s.executor.stop() s.StopBlockingChan() + s.setRunning(false) } func (s *Scheduler) stopJobs(jobs []*Job) { @@ -1376,7 +1376,7 @@ func (s *Scheduler) CustomTimer(customTimer func(d time.Duration, f func()) *tim func (s *Scheduler) StopBlockingChan() { s.startBlockingStopChanMutex.Lock() - if s.startBlockingStopChan != nil { + if s.IsRunning() && s.startBlockingStopChan != nil { close(s.startBlockingStopChan) } s.startBlockingStopChanMutex.Unlock()