diff --git a/scheduler.go b/scheduler.go index ec740042..90ff5212 100644 --- a/scheduler.go +++ b/scheduler.go @@ -359,6 +359,13 @@ func (s *scheduler) selectExecJobsOutForRescheduling(id uuid.UUID) { next = j.next(next) } } + + // Clean up any existing timer to prevent leaks + if j.timer != nil { + j.timer.Stop() + j.timer = nil // Ensure timer is cleared for GC + } + j.nextScheduled = append(j.nextScheduled, next) j.timer = s.exec.clock.AfterFunc(next.Sub(s.now()), func() { // set the actual timer on the job here and listen for