diff --git a/Duplicati/Library/RestAPI/Scheduler.cs b/Duplicati/Library/RestAPI/Scheduler.cs index bc1f175cc..459cc14e4 100644 --- a/Duplicati/Library/RestAPI/Scheduler.cs +++ b/Duplicati/Library/RestAPI/Scheduler.cs @@ -305,7 +305,7 @@ namespace Duplicati.Server //If time is exceeded, run it now if (start <= DateTime.UtcNow) { - var jobsToRun = new List(); + var collectedJobs = new List<(DateTime When, Server.Runner.IRunnerData Job)>(); //TODO: Cache this to avoid frequent lookups foreach (var id in m_dataConnection.GetBackupIDsForTags(sc.Tags).Distinct() .Select(x => x.ToString())) @@ -355,7 +355,7 @@ namespace Duplicati.Server var job = Server.Runner.CreateTask(Serialization.DuplicatiOperation.Backup, entry, taskOptions); job.OnStarting = () => OnStartingWork(job); job.OnFinished = (_) => OnCompleted(job); - jobsToRun.Add(job); + collectedJobs.Add((start, job)); } } } @@ -376,6 +376,10 @@ namespace Duplicati.Server continue; } + var jobsToRun = collectedJobs.OrderBy(x => x.When) + .Select(x => x.Job) + .ToList(); + var lastJob = jobsToRun.LastOrDefault(); if (lastJob != null) {