ephraimbuddy commented on code in PR #59764:
URL: https://github.com/apache/airflow/pull/59764#discussion_r2727670897
##########
airflow-core/src/airflow/serialization/definitions/dag.py:
##########
@@ -978,6 +984,38 @@ def clear(
from airflow.models.taskinstance import clear_task_instances
state: list[TaskInstanceState] = []
+
+ if only_new:
+ if not run_id:
+ raise ValueError("only_new requires run_id to be specified")
+
+ from airflow.models.dagbag import DBDagBag
+
+ dag_run =
session.scalar(select(DagRun).filter_by(dag_id=self.dag_id, run_id=run_id))
+ if not dag_run:
+ raise ValueError(f"DagRun with run_id '{run_id}' not found")
+
+ dagbag = DBDagBag(load_op_links=False)
+ latest_dag = dagbag.get_latest_version_of_dag(self.dag_id,
session=session)
+
+ if not latest_dag:
+ raise ValueError(f"Latest DAG version for '{self.dag_id}' not
found")
+
+ current_dag = dagbag.get_dag_for_run(dag_run=dag_run,
session=session)
+ new_task_ids = set(latest_dag.task_ids) -
set(current_dag.task_ids) if current_dag else set()
+
+ # Update dag run to latest version
+ if new_task_ids:
+ dag_version = DagVersion.get_latest_version(self.dag_id,
session=session)
+ if dag_version:
+ dag_run.created_dag_version_id = dag_version.id
+ dag_run.dag = latest_dag
+ dag_run.verify_integrity(session=session,
dag_version_id=dag_version.id)
+ session.flush()
Review Comment:
Yes. It should be in clear_task_instances. This new field should behave like
the other fields( only_failed, only_running), handled in clear_task_instances.
So the logic should be implemented there too
--
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.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]