Skip to content

Commit d477047

Browse files
committed
Prevent DetachedInstanceError when processing executor event (#54334)
(cherry picked from commit 370e0b7)
1 parent 15da8f7 commit d477047

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

airflow-core/src/airflow/jobs/scheduler_job_runner.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
from sqlalchemy.sql import expression
3939

4040
from airflow import settings
41-
from airflow.api_fastapi.execution_api.datamodels.taskinstance import TIRunContext
41+
from airflow.api_fastapi.execution_api.datamodels.taskinstance import DagRun as DRDataModel, TIRunContext
4242
from airflow.callbacks.callback_requests import DagCallbackRequest, DagRunContext, TaskCallbackRequest
4343
from airflow.configuration import conf
4444
from airflow.dag_processing.bundles.base import BundleUsageTrackingManager
@@ -827,6 +827,7 @@ def process_executor_events(
827827
select(TI)
828828
.where(filter_for_tis)
829829
.options(selectinload(TI.dag_model))
830+
.options(selectinload(TI.dag_run).selectinload(DagRun.consumed_asset_events))
830831
.options(joinedload(TI.dag_version))
831832
)
832833
# row lock this entire set of taskinstances to make sure the scheduler doesn't fail when we have
@@ -947,7 +948,7 @@ def process_executor_events(
947948
ti=ti,
948949
msg=msg,
949950
context_from_server=TIRunContext(
950-
dag_run=ti.dag_run,
951+
dag_run=DRDataModel.model_validate(ti.dag_run, from_attributes=True),
951952
max_tries=ti.max_tries,
952953
variables=[],
953954
connections=[],
@@ -2308,7 +2309,7 @@ def _purge_task_instances_without_heartbeats(
23082309
ti=ti,
23092310
msg=str(task_instance_heartbeat_timeout_message_details),
23102311
context_from_server=TIRunContext(
2311-
dag_run=ti.dag_run,
2312+
dag_run=DRDataModel.model_validate(ti.dag_run, from_attributes=True),
23122313
max_tries=ti.max_tries,
23132314
variables=[],
23142315
connections=[],

0 commit comments

Comments
 (0)