This is an automated email from the ASF dual-hosted git repository.
pierrejeambrun pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new bda97d48f0d Simplify _version_from_dag_run (#63362)
bda97d48f0d is described below
commit bda97d48f0d65bd9d53eece9a2da2327b4b8b09f
Author: Pierre Jeambrun <[email protected]>
AuthorDate: Thu Mar 12 13:34:18 2026 +0100
Simplify _version_from_dag_run (#63362)
---
airflow-core/src/airflow/models/dagbag.py | 20 ++++++--------------
1 file changed, 6 insertions(+), 14 deletions(-)
diff --git a/airflow-core/src/airflow/models/dagbag.py
b/airflow-core/src/airflow/models/dagbag.py
index 3d20c323e03..e04f77d06df 100644
--- a/airflow-core/src/airflow/models/dagbag.py
+++ b/airflow-core/src/airflow/models/dagbag.py
@@ -21,9 +21,8 @@ import hashlib
from typing import TYPE_CHECKING, Any
from uuid import UUID
-from sqlalchemy import String, inspect, select
+from sqlalchemy import String, select
from sqlalchemy.orm import Mapped, joinedload, mapped_column
-from sqlalchemy.orm.attributes import NO_VALUE
from airflow.models.base import Base, StringID
from airflow.models.dag_version import DagVersion
@@ -66,23 +65,16 @@ class DBDagBag:
return self._read_dag(serdag)
@staticmethod
- def _version_from_dag_run(dag_run: DagRun, *, session: Session) ->
DagVersion | None:
+ def _version_from_dag_run(dag_run: DagRun, *, session: Session) -> UUID |
None:
if not dag_run.bundle_version:
if dag_version :=
DagVersion.get_latest_version(dag_id=dag_run.dag_id, session=session):
- return dag_version
+ return dag_version.id
- # Check if created_dag_version relationship is already loaded to avoid
DetachedInstanceError
- info: Any = inspect(dag_run)
- if info.attrs.created_dag_version.loaded_value is not NO_VALUE:
- # Relationship is already loaded, safe to access
- return dag_run.created_dag_version
-
- # Relationship not loaded, fetch it explicitly from current session
- return session.get(DagVersion, dag_run.created_dag_version_id)
+ return dag_run.created_dag_version_id
def get_dag_for_run(self, dag_run: DagRun, session: Session) ->
SerializedDAG | None:
- if version := self._version_from_dag_run(dag_run=dag_run,
session=session):
- return self._get_dag(version_id=version.id, session=session)
+ if version_id := self._version_from_dag_run(dag_run=dag_run,
session=session):
+ return self._get_dag(version_id=version_id, session=session)
return None
def iter_all_latest_version_dags(self, *, session: Session) ->
Generator[SerializedDAG, None, None]: