From 0a8a48342cdadf9f4ffc52e80ed12f7e8b74c3a6 Mon Sep 17 00:00:00 2001 From: Daniel Standish <15932138+dstandish@users.noreply.github.com> Date: Tue, 27 Sep 2022 10:53:51 -0700 Subject: [PATCH] Fix task duration cumulative chart Previously the chart could go down, which should not happen for a cumulative chart. We fix that here. Also, we add task fail durations to the non-cumulative chart for consistency. --- airflow/www/views.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/airflow/www/views.py b/airflow/www/views.py index 52daed98876d8..920d3c3ad5265 100644 --- a/airflow/www/views.py +++ b/airflow/www/views.py @@ -2931,10 +2931,11 @@ def duration(self, dag_id, session=None): if task_instance.duration: date_time = wwwutils.epoch(task_instance.execution_date) x_points[task_instance.task_id].append(date_time) - y_points[task_instance.task_id].append(float(task_instance.duration)) fails_dict_key = (task_instance.dag_id, task_instance.task_id, task_instance.run_id) fails_total = fails_totals[fails_dict_key] - cumulative_y[task_instance.task_id].append(float(task_instance.duration + fails_total)) + y_points[task_instance.task_id].append(float(task_instance.duration + fails_total)) + + cumulative_y = {k: list(itertools.accumulate(v)) for k, v in y_points.items()} # determine the most relevant time unit for the set of task instance # durations for the DAG