1
0
mirror of https://github.com/pocketbase/pocketbase.git synced 2024-11-21 13:35:49 +02:00

added done channel for the cron ticker

This commit is contained in:
Gani Georgiev 2024-03-20 23:55:32 +02:00
parent 309c4fe6fe
commit 98ba003921

View File

@ -27,6 +27,7 @@ type Cron struct {
startTimer *time.Timer
jobs map[string]*job
interval time.Duration
tickerDone chan bool
sync.RWMutex
}
@ -38,9 +39,10 @@ type Cron struct {
// You can change the default timezone with Cron.SetTimezone().
func New() *Cron {
return &Cron{
interval: 1 * time.Minute,
timezone: time.UTC,
jobs: map[string]*job{},
interval: 1 * time.Minute,
timezone: time.UTC,
jobs: map[string]*job{},
tickerDone: make(chan bool),
}
}
@ -142,6 +144,7 @@ func (c *Cron) Stop() {
return // already stopped
}
c.tickerDone <- true
c.ticker.Stop()
c.ticker = nil
}
@ -168,8 +171,13 @@ func (c *Cron) Start() {
// run after each tick
go func() {
for t := range c.ticker.C {
c.runDue(t)
for {
select {
case <-c.tickerDone:
return
case t := <-c.ticker.C:
c.runDue(t)
}
}
}()
})