Skip to content

Commit

Permalink
Fix flaky order of returned dag runs (#24405)
Browse files Browse the repository at this point in the history
There was no ordering on a query returning dag_runs when it comes
to grid view. This caused flaky tests but also it would have
caused problems with random reordering of reported dagruns in the
UI (it seems).

This change adds stable ordering on returned Dag Runs:

* by dag_run_id (ascending) asc

No need to filter by map_index as there will be always max one
returned TI from each dag run

(cherry picked from commit 2edab57)
  • Loading branch information
potiuk authored and ephraimbuddy committed Jun 29, 2022
1 parent 86f891a commit fa50004
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 17 deletions.
34 changes: 19 additions & 15 deletions airflow/www/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,21 +130,25 @@ def get_mapped_summary(parent_instance, task_instances):


def get_task_summaries(task, dag_runs: List[DagRun], session: Session) -> List[Dict[str, Any]]:
tis = session.query(
TaskInstance.dag_id,
TaskInstance.task_id,
TaskInstance.run_id,
TaskInstance.map_index,
TaskInstance.state,
TaskInstance.start_date,
TaskInstance.end_date,
TaskInstance._try_number,
).filter(
TaskInstance.dag_id == task.dag_id,
TaskInstance.run_id.in_([dag_run.run_id for dag_run in dag_runs]),
TaskInstance.task_id == task.task_id,
# Only get normal task instances or the first mapped task
TaskInstance.map_index <= 0,
tis = (
session.query(
TaskInstance.dag_id,
TaskInstance.task_id,
TaskInstance.run_id,
TaskInstance.map_index,
TaskInstance.state,
TaskInstance.start_date,
TaskInstance.end_date,
TaskInstance._try_number,
)
.filter(
TaskInstance.dag_id == task.dag_id,
TaskInstance.run_id.in_([dag_run.run_id for dag_run in dag_runs]),
TaskInstance.task_id == task.task_id,
# Only get normal task instances or the first mapped task
TaskInstance.map_index <= 0,
)
.order_by(TaskInstance.run_id.asc())
)

def _get_summary(task_instance):
Expand Down
2 changes: 0 additions & 2 deletions airflow/www/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -3543,7 +3543,6 @@ def grid_data(self):
'groups': task_group_to_grid(dag.task_group, dag, dag_runs, session),
'dag_runs': encoded_runs,
}

# avoid spaces to reduce payload size
return htmlsafe_json_dumps(data, separators=(',', ':'))

Expand Down Expand Up @@ -3581,7 +3580,6 @@ def audit_log(self, session=None):
query = query.filter(Log.event.notin_(excluded_events))

dag_audit_logs = query.all()

content = self.render_template(
'airflow/dag_audit_log.html',
dag=dag,
Expand Down

0 comments on commit fa50004

Please sign in to comment.