From 604abd5f9aca9c8e235bc7ceb7c5237b9c8c20e0 Mon Sep 17 00:00:00 2001 From: glax Date: Sat, 24 Jun 2023 21:00:26 +0200 Subject: [PATCH] Fix bug where ChildTasks hung parentTasks --- Tranga/TaskManager.cs | 9 ++++----- Tranga/TrangaTask.cs | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/Tranga/TaskManager.cs b/Tranga/TaskManager.cs index 6ad439a..50732a8 100644 --- a/Tranga/TaskManager.cs +++ b/Tranga/TaskManager.cs @@ -333,17 +333,16 @@ public class TaskManager this._allTasks = JsonConvert.DeserializeObject>(buffer, new JsonSerializerSettings() { Converters = { new TrangaTask.TrangaTaskJsonConverter() } })!; } - foreach (TrangaTask task in this._allTasks.Where(tTask => tTask.parentTaskId is not null)) + foreach (TrangaTask task in this._allTasks.Where(tTask => tTask.parentTaskId is not null).ToArray()) { TrangaTask? parentTask = this._allTasks.FirstOrDefault(pTask => pTask.taskId == task.parentTaskId); if (parentTask is not null) { - task.parentTask = parentTask; - parentTask.AddChildTask(task); + this.DeleteTask(task); + parentTask.lastExecuted = DateTime.UnixEpoch; } } - - + if (File.Exists(settings.knownPublicationsPath)) { logger?.WriteLine(this.GetType().ToString(), $"Importing known publications from {settings.knownPublicationsPath}"); diff --git a/Tranga/TrangaTask.cs b/Tranga/TrangaTask.cs index 8e142a0..b08b789 100644 --- a/Tranga/TrangaTask.cs +++ b/Tranga/TrangaTask.cs @@ -72,7 +72,7 @@ public abstract class TrangaTask this.state = ExecutionState.Running; this.executionStarted = DateTime.Now; this.lastChange = DateTime.Now; - if(parentTask is not null && parentTask.childTasks.All(ct => ct.state is ExecutionState.Waiting)) + if(parentTask is not null && parentTask.childTasks.All(ct => ct.state is ExecutionState.Waiting or ExecutionState.Failed)) parentTask.executionStarted = DateTime.Now; HttpStatusCode statusCode = ExecuteTask(taskManager, logger, cancellationToken);