Skip to content

Commit d91ebda

Browse files
committed
fixup! Read current task executions by exact region and try
1 parent ea3470f commit d91ebda

15 files changed

Lines changed: 363 additions & 95 deletions

File tree

‎airflow-core/src/airflow/api_fastapi/core_api/routes/public/hitl.py‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,7 @@ def _get_task_instance_with_hitl_detail(
115115
dag_id=dag_id,
116116
run_id=dag_run_id,
117117
task_id=task_id,
118-
session=session,
119-
dag_bag=dag_bag,
118+
resolver=TaskCoordinateResolver(dag_bag, session),
120119
map_index=map_index,
121120
region_id=region_id,
122121
region_index=region_index,

‎airflow-core/src/airflow/api_fastapi/core_api/routes/public/log.py‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ def get_external_log_url(
211211
TaskInstance.try_number == try_number,
212212
)
213213
.options(joinedload(TaskInstance.dag_model))
214+
.execution_options(include_all_attempts=True)
214215
)
215216
ti = session.scalar(query)
216217

‎airflow-core/src/airflow/api_fastapi/core_api/routes/public/task_state_store.py‎

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626

2727
from airflow._shared.state import TaskScope
2828
from airflow.api_fastapi.auth.managers.models.resource_details import DagAccessEntity
29-
from airflow.api_fastapi.common.dagbag import DagBagDep
3029
from airflow.api_fastapi.common.db.common import SessionDep, paginated_select
3130
from airflow.api_fastapi.common.parameters import QueryLimit, QueryOffset
3231
from airflow.api_fastapi.common.router import AirflowRouter
@@ -38,7 +37,11 @@
3837
)
3938
from airflow.api_fastapi.core_api.openapi.exceptions import create_openapi_http_exception_doc
4039
from airflow.api_fastapi.core_api.security import requires_access_dag
41-
from airflow.api_fastapi.core_api.services.public.task_coordinates import TaskScopeDep, resolve_task_scope
40+
from airflow.api_fastapi.core_api.services.public.task_coordinates import (
41+
CoordinateResolverDep,
42+
TaskScopeDep,
43+
resolve_task_scope,
44+
)
4245
from airflow.configuration import conf
4346
from airflow.models.dynamic_region import SENTINEL_REGION_ID, DynamicRegion
4447
from airflow.models.task_state_store import TaskStateStoreModel
@@ -97,8 +100,7 @@ def _resolve_clear_scope(
97100
dag_id: str,
98101
dag_run_id: str,
99102
task_id: str,
100-
session: SessionDep,
101-
dag_bag: DagBagDep,
103+
resolver: CoordinateResolverDep,
102104
map_index: Annotated[int, Query(ge=-1)] = -1,
103105
region_id: Annotated[UUID | None, Query()] = None,
104106
region_index: Annotated[int | None, Query(ge=-1)] = None,
@@ -108,8 +110,7 @@ def _resolve_clear_scope(
108110
dag_id=dag_id,
109111
run_id=dag_run_id,
110112
task_id=task_id,
111-
session=session,
112-
dag_bag=dag_bag,
113+
resolver=resolver,
113114
map_index=map_index,
114115
region_id=region_id,
115116
region_index=region_index,

‎airflow-core/src/airflow/api_fastapi/core_api/routes/public/xcom.py‎

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
from airflow.exceptions import TaskNotFound
6363
from airflow.models import DagRun as DR
6464
from airflow.models.dag import DagModel
65-
from airflow.models.task_coordinates import public_map_index_expression
65+
from airflow.models.task_coordinates import TaskCoordinateResolver, public_map_index_expression
6666
from airflow.models.taskinstance import TaskInstance
6767
from airflow.models.xcom import XComModel, build_xcom_read_query, select_producers, xcom_entity
6868

@@ -344,8 +344,7 @@ def create_xcom_entry(
344344
dag_id=dag_id,
345345
run_id=dag_run_id,
346346
task_id=task_id,
347-
session=session,
348-
dag_bag=dag_bag,
347+
resolver=TaskCoordinateResolver(dag_bag, session),
349348
map_index=request_body.map_index,
350349
region_id=request_body.region_id,
351350
region_index=request_body.region_index,
@@ -430,8 +429,7 @@ def update_xcom_entry(
430429
dag_id=dag_id,
431430
run_id=dag_run_id,
432431
task_id=task_id,
433-
session=session,
434-
dag_bag=dag_bag,
432+
resolver=TaskCoordinateResolver(dag_bag, session),
435433
map_index=patch_body.map_index,
436434
region_id=patch_body.region_id,
437435
region_index=patch_body.region_index,

‎airflow-core/src/airflow/api_fastapi/core_api/services/public/task_coordinates.py‎

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,6 @@
3030
from airflow.models.task_coordinates import TaskCoordinateResolver
3131

3232
if TYPE_CHECKING:
33-
from sqlalchemy.orm import Session
34-
35-
from airflow.models.dagbag import DBDagBag
3633
from airflow.models.task_coordinates import TaskCoordinate
3734

3835

@@ -63,8 +60,7 @@ def resolve_task_scope(
6360
dag_id: str,
6461
run_id: str,
6562
task_id: str,
66-
session: Session,
67-
dag_bag: DBDagBag,
63+
resolver: TaskCoordinateResolver,
6864
map_index: int = -1,
6965
region_id: UUID | None = None,
7066
region_index: int | None = None,
@@ -83,7 +79,6 @@ def resolve_task_scope(
8379
map_index=region_index,
8480
region_id=region_id,
8581
)
86-
resolver = TaskCoordinateResolver(dag_bag, session)
8782
if region_id == SENTINEL_REGION_ID or not resolver.has_regions(dag_id, run_id, task_id):
8883
return TaskScope(
8984
dag_id=dag_id,
@@ -137,8 +132,7 @@ def _task_scope(
137132
dag_id=dag_id,
138133
run_id=dag_run_id,
139134
task_id=task_id,
140-
session=resolver.session,
141-
dag_bag=resolver.dag_bag,
135+
resolver=resolver,
142136
map_index=map_index,
143137
region_id=region_id,
144138
region_index=region_index,

‎airflow-core/src/airflow/api_fastapi/core_api/services/public/task_instances.py‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -237,8 +237,8 @@ def _patch_ti_validate_request(
237237
.where(TI.dag_id == dag_id, TI.run_id == dag_run_id, TI.task_id == task_id)
238238
.options(joinedload(TI.rendered_task_instance_fields))
239239
)
240+
resolver = TaskCoordinateResolver(dag_bag, session)
240241
if body.region_id is None:
241-
resolver = TaskCoordinateResolver(dag_bag, session)
242242
for version in session.scalars(
243243
select(TI.dag_version_id)
244244
.where(
@@ -254,8 +254,7 @@ def _patch_ti_validate_request(
254254
dag_id=dag_id,
255255
run_id=dag_run_id,
256256
task_id=task_id,
257-
session=session,
258-
dag_bag=dag_bag,
257+
resolver=resolver,
259258
map_index=map_index if map_index is not None else -1,
260259
region_id=body.region_id,
261260
region_index=body.region_index,

‎airflow-core/src/airflow/models/xcom.py‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ def set(
267267
task_id: str,
268268
run_id: str,
269269
map_index: int = -1,
270-
region_id: UUID | None = SENTINEL_REGION_ID,
270+
region_id: UUID = SENTINEL_REGION_ID,
271271
serialize: bool = True,
272272
dag_result: bool = False,
273273
mapped_length: int | None = None,
@@ -282,6 +282,7 @@ def set(
282282
:param task_id: Task ID.
283283
:param run_id: DAG run ID for the task.
284284
:param map_index: Optional map index to assign XCom for a mapped task.
285+
:param region_id: Region owning the task instance. Defaults to the top-level region.
285286
:param serialize: Optional parameter to specify if value should be serialized or not.
286287
The default is ``True``.
287288
:param mapped_length: Length of the value, if it can be used to expand a

‎airflow-core/src/airflow/ui/src/layouts/Details/Gantt/utils.test.ts‎

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,8 +142,12 @@ describe("transformGanttData", () => {
142142
allTries: [
143143
{
144144
end_date: null,
145+
id: "try-1",
145146
is_mapped: false,
147+
map_index: -1,
146148
queued_dttm: null,
149+
region_id: "00000000-0000-0000-0000-000000000000",
150+
region_index: -1,
147151
scheduled_dttm: null,
148152
start_date: null,
149153
state: null,
@@ -165,8 +169,12 @@ describe("transformGanttData", () => {
165169
allTries: [
166170
{
167171
end_date: null,
172+
id: "try-2",
168173
is_mapped: false,
174+
map_index: -1,
169175
queued_dttm: null,
176+
region_id: "00000000-0000-0000-0000-000000000000",
177+
region_index: -1,
170178
scheduled_dttm: null,
171179
start_date: "2024-03-14T10:00:00+00:00",
172180
state: "running",
@@ -210,8 +218,12 @@ describe("transformGanttData", () => {
210218
allTries: [
211219
{
212220
end_date: "2024-03-14T10:05:00+00:00",
221+
id: "try-3",
213222
is_mapped: false,
223+
map_index: -1,
214224
queued_dttm: null,
225+
region_id: "00000000-0000-0000-0000-000000000000",
226+
region_index: -1,
215227
scheduled_dttm: null,
216228
start_date: "2024-03-14T10:00:00+00:00",
217229
state: "success",
@@ -235,8 +247,12 @@ describe("transformGanttData", () => {
235247
allTries: [
236248
{
237249
end_date: "2024-03-14T10:05:00+00:00",
250+
id: "try-4",
238251
is_mapped: false,
252+
map_index: -1,
239253
queued_dttm: "2024-03-14T09:59:00+00:00",
254+
region_id: "00000000-0000-0000-0000-000000000000",
255+
region_index: -1,
240256
scheduled_dttm: "2024-03-14T09:58:00+00:00",
241257
start_date: "2024-03-14T10:00:00+00:00",
242258
state: "success",
@@ -260,8 +276,12 @@ describe("transformGanttData", () => {
260276
allTries: [
261277
{
262278
end_date: "2024-03-14T10:05:00+00:00",
279+
id: "try-5",
263280
is_mapped: false,
281+
map_index: -1,
264282
queued_dttm: "2024-03-14T09:59:00+00:00",
283+
region_id: "00000000-0000-0000-0000-000000000000",
284+
region_index: -1,
265285
scheduled_dttm: "2024-03-14T09:58:00+00:00",
266286
start_date: "2024-03-14T10:00:00+00:00",
267287
state: "success",
@@ -295,8 +315,12 @@ describe("transformGanttData", () => {
295315
allTries: [
296316
{
297317
end_date: null,
318+
id: "running-try",
298319
is_mapped: false,
320+
map_index: -1,
299321
queued_dttm: "2024-03-14T09:59:00+00:00",
322+
region_id: "00000000-0000-0000-0000-000000000000",
323+
region_index: -1,
300324
scheduled_dttm: null,
301325
start_date: "2024-03-14T10:00:00+00:00",
302326
state: "running",
@@ -324,8 +348,12 @@ describe("transformGanttData", () => {
324348
allTries: [
325349
{
326350
end_date: "2024-03-14T10:05:00+00:00",
351+
id: "try-6",
327352
is_mapped: false,
353+
map_index: -1,
328354
queued_dttm: "2024-03-14T09:59:00+00:00",
355+
region_id: "00000000-0000-0000-0000-000000000000",
356+
region_index: -1,
329357
scheduled_dttm: null,
330358
start_date: "2024-03-14T10:00:00+00:00",
331359
state: "success",
@@ -348,8 +376,12 @@ describe("transformGanttData", () => {
348376
allTries: [
349377
{
350378
end_date: "2024-03-14T10:05:00+00:00",
379+
id: "try-7",
351380
is_mapped: false,
381+
map_index: -1,
352382
queued_dttm: null,
383+
region_id: "00000000-0000-0000-0000-000000000000",
384+
region_index: -1,
353385
scheduled_dttm: null,
354386
start_date: "2024-03-14T10:00:00+00:00",
355387
state: "success",
@@ -371,8 +403,12 @@ describe("transformGanttData", () => {
371403
allTries: [
372404
{
373405
end_date: "2024-03-14T10:05:00+00:00",
406+
id: "try-8",
374407
is_mapped: false,
408+
map_index: -1,
375409
queued_dttm: null,
410+
region_id: "00000000-0000-0000-0000-000000000000",
411+
region_index: -1,
376412
scheduled_dttm: null,
377413
start_date: "2024-03-14T10:00:00+00:00",
378414
state: "failed",
@@ -382,8 +418,12 @@ describe("transformGanttData", () => {
382418
},
383419
{
384420
end_date: "2024-03-14T09:55:00+00:00",
421+
id: "try-9",
385422
is_mapped: false,
423+
map_index: -1,
386424
queued_dttm: null,
425+
region_id: "00000000-0000-0000-0000-000000000000",
426+
region_index: -1,
387427
scheduled_dttm: null,
388428
start_date: "2024-03-14T09:50:00+00:00",
389429
state: "failed",

0 commit comments

Comments
 (0)