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]:

Reply via email to