From 0de8780c5c94c0c3b82add08d332cfba02ad54d1 Mon Sep 17 00:00:00 2001
From: Jorrit Schaap <schaap@astron.nl>
Date: Tue, 2 Nov 2021 10:16:44 +0100
Subject: [PATCH] TMSS-1124: return default pipeline duration when no
 predecessors

---
 SAS/TMSS/backend/src/tmss/tmssapp/models/scheduling.py | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/models/scheduling.py b/SAS/TMSS/backend/src/tmss/tmssapp/models/scheduling.py
index 308c4bcb8d8..9fe67681a96 100644
--- a/SAS/TMSS/backend/src/tmss/tmssapp/models/scheduling.py
+++ b/SAS/TMSS/backend/src/tmss/tmssapp/models/scheduling.py
@@ -196,7 +196,11 @@ class Subtask(BasicCommon, ProjectPropertyMixin, TemplateSchemaMixin):
         if self.specifications_template.type.value == SubtaskType.Choices.PIPELINE.value:
             # pipelines usually do not have a specified duration, so make a guess (half the obs duration?).
             # In case we have several associated tasks: this guess is probably in no way accurate anyway, so we assume it does not really matter which task blueprint we refer to here
-            return timedelta(seconds=self.task_blueprint.specifications_doc.get('duration', max(p.specified_duration.total_seconds() for p in self.predecessors)/2))
+            try:
+                return timedelta(seconds=self.task_blueprint.specifications_doc.get('duration', max(p.specified_duration.total_seconds() for p in self.predecessors)/2))
+            except ValueError:
+                # no predecessors (should not happen). Return a default guess.
+                return timedelta(minutes=1)
 
         # other subtasktypes usually depend on cpu/data/network etc. So, make a guess (for now)
         return timedelta(minutes=5)
-- 
GitLab