diff --git a/README.md b/README.md index 744cc61..76dd7b2 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ type Scheduler interface { // DeleteJob removes the job with the specified key from the // scheduler's execution queue. - DeleteJob(key int) error + DeleteJob(ctx context.Context, key int) error // Clear removes all of the scheduled jobs. Clear() error diff --git a/examples/main.go b/examples/main.go index f92f1e6..8f6b993 100644 --- a/examples/main.go +++ b/examples/main.go @@ -61,7 +61,7 @@ func sampleScheduler(ctx context.Context, wg *sync.WaitGroup) { fmt.Println(scheduledJob.Trigger().Description()) fmt.Println("Before delete: ", sched.GetJobKeys()) - _ = sched.DeleteJob(cronJob.Key()) + _ = sched.DeleteJob(ctx, cronJob.Key()) fmt.Println("After delete: ", sched.GetJobKeys()) time.Sleep(time.Second * 2) diff --git a/quartz/scheduler.go b/quartz/scheduler.go index 7902738..cc37ce6 100644 --- a/quartz/scheduler.go +++ b/quartz/scheduler.go @@ -40,7 +40,7 @@ type Scheduler interface { // DeleteJob removes the job with the specified key from the // scheduler's execution queue. - DeleteJob(key int) error + DeleteJob(ctx context.Context, key int) error // Clear removes all of the scheduled jobs. Clear() error @@ -225,13 +225,16 @@ func (sched *StdScheduler) GetScheduledJob(key int) (ScheduledJob, error) { } // DeleteJob removes the Job with the specified key if present. -func (sched *StdScheduler) DeleteJob(key int) error { +func (sched *StdScheduler) DeleteJob(ctx context.Context, key int) error { sched.mtx.Lock() defer sched.mtx.Unlock() for i, scheduled := range sched.queue.ScheduledJobs() { if scheduled.Job().Key() == key { _, err := sched.queue.Remove(i) + if err == nil { + sched.reset(ctx) + } return err } } diff --git a/quartz/scheduler_test.go b/quartz/scheduler_test.go index e3430cb..7072fe6 100644 --- a/quartz/scheduler_test.go +++ b/quartz/scheduler_test.go @@ -50,14 +50,14 @@ func TestScheduler(t *testing.T) { _, err = sched.GetScheduledJob(jobKeys[0]) assertEqual(t, err, nil) - err = sched.DeleteJob(shellJob.Key()) + err = sched.DeleteJob(ctx, shellJob.Key()) assertEqual(t, err, nil) nonExistentJobKey := 1111 _, err = sched.GetScheduledJob(nonExistentJobKey) assertNotEqual(t, err, nil) - err = sched.DeleteJob(nonExistentJobKey) + err = sched.DeleteJob(ctx, nonExistentJobKey) assertNotEqual(t, err, nil) scheduledJobKeys = sched.GetJobKeys()