summaryrefslogtreecommitdiff
path: root/vendor/codeberg.org/gruf/go-sched/scheduler.go
diff options
context:
space:
mode:
authorLibravatar kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com>2022-07-22 11:43:34 +0100
committerLibravatar GitHub <noreply@github.com>2022-07-22 12:43:34 +0200
commitd20ec967c429e1bc0314aff03c70079cca6a0e56 (patch)
tree24581d4b3119851324e73577f03c5583de5b5383 /vendor/codeberg.org/gruf/go-sched/scheduler.go
parent[chore] Update image/video size defaults to mastodon's (#723) (diff)
downloadgotosocial-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.go14
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