diff options
author | 2022-07-22 11:43:34 +0100 | |
---|---|---|
committer | 2022-07-22 12:43:34 +0200 | |
commit | d20ec967c429e1bc0314aff03c70079cca6a0e56 (patch) | |
tree | 24581d4b3119851324e73577f03c5583de5b5383 /vendor/codeberg.org/gruf/go-sched/scheduler.go | |
parent | [chore] Update image/video size defaults to mastodon's (#723) (diff) | |
download | gotosocial-d20ec967c429e1bc0314aff03c70079cca6a0e56.tar.xz |
[bugfix] update go-cache library to fix critical bug during cache sweep scheduling (#725)
* update go-cache library to fix critical bug regarding cache sweep scheduling
Signed-off-by: kim <grufwub@gmail.com>
* update go-sched
Signed-off-by: kim <grufwub@gmail.com>
Diffstat (limited to 'vendor/codeberg.org/gruf/go-sched/scheduler.go')
-rw-r--r-- | vendor/codeberg.org/gruf/go-sched/scheduler.go | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/vendor/codeberg.org/gruf/go-sched/scheduler.go b/vendor/codeberg.org/gruf/go-sched/scheduler.go index d017ddcf6..8d076fea0 100644 --- a/vendor/codeberg.org/gruf/go-sched/scheduler.go +++ b/vendor/codeberg.org/gruf/go-sched/scheduler.go @@ -132,7 +132,13 @@ func (sch *Scheduler) run(ctx context.Context) { // Get next job time next := sch.jobs[0].Next() - if until := next.Sub(now); until <= 0 { + // If this job is _just_ about to be ready, we + // don't bother sleeping. It's wasted cycles only + // sleeping for some obscenely tiny amount of time + // we can't guarantee precision for. + const precision = time.Millisecond + + if until := next.Sub(now); until <= precision/1e3 { // This job is behind schedule, // set timer to always tick tch = alwaysticks @@ -155,6 +161,10 @@ func (sch *Scheduler) run(ctx context.Context) { // Timer ticked, run scheduled case now := <-tch: + if !timerset { + // alwaysticks returns zero times + now = time.Now() + } sch.schedule(now) // Received update, handle job/id @@ -213,7 +223,7 @@ func (sch *Scheduler) schedule(now time.Time) { // Run this job async! go job.Run(now) - if job.Next().IsZero() { + if next.IsZero() { // Zero time, this job is done and can be dropped sch.jobs = append(sch.jobs[:i], sch.jobs[i+1:]...) continue |