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]


Reply via email to