From 08f73d1f5bf79d45e586a03a5b86fe09266c8c3f Mon Sep 17 00:00:00 2001 From: Roy de Goei <goei@astron.nl> Date: Thu, 27 Jan 2022 13:04:13 +0100 Subject: [PATCH] SDC-470: Do not filter on status and skip when no timestamp --- atdb/taskdatabase/services/algorithms.py | 37 +++++++++++++----------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/atdb/taskdatabase/services/algorithms.py b/atdb/taskdatabase/services/algorithms.py index 925f5437..d1f5dc25 100644 --- a/atdb/taskdatabase/services/algorithms.py +++ b/atdb/taskdatabase/services/algorithms.py @@ -44,30 +44,33 @@ def get_size(status_list, type): @timeit def get_min_start_and_max_end_time(sas_id): """ - Retrieve the minimum start time en maximum end time of a set of taskids (sas_id) which has the - status 'archived' or 'finished' + Retrieve the minimum start time en maximum end time of a set of taskids (sas_id) The start time is the moment when the task start 'processing' The end time is the moment when the task was 'processed' """ min_start_time = None max_end_time = None logger.info("get_min_start_and_max_end_time(" + str(sas_id) + ")") - tasks = Task.objects.filter(sas_id=sas_id).filter(Q(status='archived') | Q(status='finished')) + tasks = Task.objects.filter(sas_id=sas_id) for task in tasks: - # If more entrees are found for 'processing' task, get the latest - latest_start_time = LogEntry.objects.filter(task=task.pk).filter(step_name='running').filter(status='processing').latest('timestamp') - start_time = latest_start_time.timestamp - # If more entrees are found for 'processed' task, get the latest - lastest_end_time = LogEntry.objects.filter(task=task.pk).filter(step_name='running').filter(status='processed').latest('timestamp') - end_time = lastest_end_time.timestamp - if min_start_time is None: - min_start_time = start_time - elif start_time < min_start_time: - min_start_time = start_time - if max_end_time is None: - max_end_time = end_time - elif end_time > max_end_time: - max_end_time = end_time + try: + # If more entrees are found for 'processing' task, get the latest + latest_start_time = LogEntry.objects.filter(task=task.pk).filter(step_name='running').filter(status='processing').latest('timestamp') + start_time = latest_start_time.timestamp + # If more entrees are found for 'processed' task, get the latest + lastest_end_time = LogEntry.objects.filter(task=task.pk).filter(step_name='running').filter(status='processed').latest('timestamp') + end_time = lastest_end_time.timestamp + if min_start_time is None: + min_start_time = start_time + elif start_time < min_start_time: + min_start_time = start_time + if max_end_time is None: + max_end_time = end_time + elif end_time > max_end_time: + max_end_time = end_time + except: + pass # having no timestamp, just skip + return min_start_time, max_end_time -- GitLab