From ddbdd424536fede7f9eae54faef0473c616bf02a Mon Sep 17 00:00:00 2001 From: Travis Ralston <travpc@gmail.com> Date: Tue, 1 Aug 2023 17:17:48 -0600 Subject: [PATCH] Fix unfinished task scheduling --- cmd/media_repo/main.go | 7 ------- tasks/all.go | 2 ++ tasks/exec.go | 4 ++++ tasks/schedule.go | 18 ++++++++++++++++++ 4 files changed, 24 insertions(+), 7 deletions(-) diff --git a/cmd/media_repo/main.go b/cmd/media_repo/main.go index 88c1509f..4f4f58c8 100644 --- a/cmd/media_repo/main.go +++ b/cmd/media_repo/main.go @@ -73,13 +73,6 @@ func main() { logrus.Info("Starting up...") runtime.RunStartupSequence() - logrus.Info("Checking background tasks...") - err = scanAndStartUnfinishedTasks() - if err != nil { - sentry.CaptureException(err) - logrus.Fatal(err) - } - logrus.Info("Starting recurring tasks...") tasks.StartAll() diff --git a/tasks/all.go b/tasks/all.go index 713ef16b..a4eb7e01 100644 --- a/tasks/all.go +++ b/tasks/all.go @@ -10,6 +10,8 @@ func StartAll() { scheduleHourly(RecurringTaskPurgeRemoteMedia, task_runner.PurgeRemoteMedia) scheduleHourly(RecurringTaskPurgeThumbnails, task_runner.PurgeThumbnails) scheduleHourly(RecurringTaskPurgePreviews, task_runner.PurgePreviews) + + scheduleUnfinished() } func StopAll() { diff --git a/tasks/exec.go b/tasks/exec.go index dc9d3ca8..a8eab10c 100644 --- a/tasks/exec.go +++ b/tasks/exec.go @@ -56,6 +56,10 @@ func tryBeginTask(id int, recur bool) { } func beginTask(task *database.DbTask) { + if task.EndTs > 0 { + return // just skip it + } + // TODO: Worker group: https://github.com/turt2live/matrix-media-repo/issues/425 runnerCtx := rcontext.Initial().LogWithFields(logrus.Fields{"task_id": task.TaskId}) if task.Name == string(TaskDatastoreMigrate) { go task_runner.DatastoreMigrate(runnerCtx, task) diff --git a/tasks/schedule.go b/tasks/schedule.go index c1f394b2..9821a7cb 100644 --- a/tasks/schedule.go +++ b/tasks/schedule.go @@ -5,6 +5,7 @@ import ( "sync" "time" + "github.com/getsentry/sentry-go" "github.com/sirupsen/logrus" "github.com/turt2live/matrix-media-repo/common/rcontext" "github.com/turt2live/matrix-media-repo/database" @@ -97,6 +98,23 @@ func stopRecurring() { } } +func scheduleUnfinished() { + if ids.GetMachineId() != 0 { + return // don't schedule here + } + ctx := rcontext.Initial().LogWithFields(logrus.Fields{"startup": true}) + taskDb := database.GetInstance().Tasks.Prepare(ctx) + tasks, err := taskDb.GetAll(false) + if err != nil { + sentry.CaptureException(err) + ctx.Log.Fatal("Error getting unfinished tasks: ", err) + return + } + for _, task := range tasks { + beginTask(task) + } +} + func RunDatastoreMigration(ctx rcontext.RequestContext, sourceDsId string, targetDsId string, beforeTs int64) (*database.DbTask, error) { return scheduleTask(ctx, TaskDatastoreMigrate, task_runner.DatastoreMigrateParams{ SourceDsId: sourceDsId, -- GitLab