jedcunningham commented on a change in pull request #16086:
URL: https://github.com/apache/airflow/pull/16086#discussion_r639816922
##########
File path: airflow/models/dag.py
##########
@@ -1050,7 +1109,113 @@ def get_task_instances(self, start_date=None,
end_date=None, state=None, session
)
else:
tis = tis.filter(TaskInstance.state.in_(state))
- tis = tis.order_by(TaskInstance.execution_date).all()
+
+ # Next, get any of them from our parent DAG (if there is one)
+ if include_parentdag and self.is_subdag and self.parent_dag is not
None:
+ p_dag = self.parent_dag.partial_subset(
+ task_ids_or_regex=r"^{}$".format(self.dag_id.split('.')[1]),
+ include_upstream=False,
+ include_downstream=True,
+ )
+ result.update(
+ p_dag.get_task_instances(
+ task_ids=task_ids,
+ start_date=start_date,
+ end_date=end_date,
+ state=state,
+ include_subdags=include_subdags,
+ include_parentdag=False,
+ as_pk_tuple=True,
+ session=session,
+ dag_bag=dag_bag,
+ recursion_depth=recursion_depth,
+ max_recursion_depth=max_recursion_depth,
+ visited_external_tis=visited_external_tis,
+ )
+ )
+
+ if include_subdags:
Review comment:
```suggestion
if include_dependent_dags:
```
Don't we want to use the new flag here? Compat is handled in `clear`?
##########
File path: airflow/models/dag.py
##########
@@ -1025,11 +1025,68 @@ def get_task_instances(self, start_date=None,
end_date=None, state=None, session
start_date = (timezone.utcnow() - timedelta(30)).date()
start_date = timezone.make_aware(datetime.combine(start_date,
datetime.min.time()))
- tis = session.query(TaskInstance).filter(
- TaskInstance.dag_id == self.dag_id,
- TaskInstance.execution_date >= start_date,
- TaskInstance.task_id.in_([t.task_id for t in self.tasks]),
+ tis = self._get_task_instances(
+ task_ids=None,
+ start_date=start_date,
+ end_date=end_date,
+ state=state,
+ include_subdags=False,
+ include_parentdag=False,
+ include_dependent_dags=False,
+ as_pk_tuple=False,
+ session=session,
)
+ tis = tis.order_by(TaskInstance.execution_date).all()
+ return tis
Review comment:
nit
```suggestion
return tis.order_by(TaskInstance.execution_date).all()
```
Or, `return self._get_task_instances(...).order_by().all()`?
##########
File path: airflow/models/dag.py
##########
@@ -1025,11 +1025,68 @@ def get_task_instances(self, start_date=None,
end_date=None, state=None, session
start_date = (timezone.utcnow() - timedelta(30)).date()
start_date = timezone.make_aware(datetime.combine(start_date,
datetime.min.time()))
- tis = session.query(TaskInstance).filter(
- TaskInstance.dag_id == self.dag_id,
- TaskInstance.execution_date >= start_date,
- TaskInstance.task_id.in_([t.task_id for t in self.tasks]),
+ tis = self._get_task_instances(
+ task_ids=None,
+ start_date=start_date,
+ end_date=end_date,
+ state=state,
+ include_subdags=False,
+ include_parentdag=False,
+ include_dependent_dags=False,
+ as_pk_tuple=False,
+ session=session,
)
+ tis = tis.order_by(TaskInstance.execution_date).all()
+ return tis
+
+ def _get_task_instances(
+ self,
+ *,
+ task_ids,
+ start_date,
+ end_date,
+ state,
+ include_subdags,
+ include_parentdag,
+ include_dependent_dags,
+ as_pk_tuple,
+ session,
+ dag_bag=None,
+ recursion_depth=0,
+ max_recursion_depth=None,
+ visited_external_tis=None,
+ ):
Review comment:
Might be nice to have type annotations here.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]