This is an automated email from the ASF dual-hosted git repository.
bbovenzi 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 7ba6d9f7163 feat(task_instances): add try_number as filter (#54695)
7ba6d9f7163 is described below
commit 7ba6d9f7163f7d94de47a282a0e61fd3fef9c683
Author: Wei Lee <[email protected]>
AuthorDate: Sat Aug 23 00:00:26 2025 +0800
feat(task_instances): add try_number as filter (#54695)
---
.../src/airflow/api_fastapi/common/parameters.py | 9 +++++++++
.../core_api/openapi/v2-rest-api-generated.yaml | 16 ++++++++++++++++
.../api_fastapi/core_api/routes/public/task_instances.py | 11 ++++++++++-
.../src/airflow/ui/openapi-gen/queries/common.ts | 10 ++++++----
.../airflow/ui/openapi-gen/queries/ensureQueryData.ts | 12 ++++++++----
.../src/airflow/ui/openapi-gen/queries/prefetch.ts | 12 ++++++++----
.../src/airflow/ui/openapi-gen/queries/queries.ts | 12 ++++++++----
.../src/airflow/ui/openapi-gen/queries/suspense.ts | 12 ++++++++----
.../src/airflow/ui/openapi-gen/requests/services.gen.ts | 4 ++++
.../src/airflow/ui/openapi-gen/requests/types.gen.ts | 2 ++
.../core_api/routes/public/test_task_instances.py | 15 +++++++++++++++
11 files changed, 94 insertions(+), 21 deletions(-)
diff --git a/airflow-core/src/airflow/api_fastapi/common/parameters.py
b/airflow-core/src/airflow/api_fastapi/common/parameters.py
index 4e98d028aa8..4ee000a2173 100644
--- a/airflow-core/src/airflow/api_fastapi/common/parameters.py
+++ b/airflow-core/src/airflow/api_fastapi/common/parameters.py
@@ -733,6 +733,15 @@ QueryTIDagVersionFilter = Annotated[
)
),
]
+QueryTITryNumberFilter = Annotated[
+ FilterParam[list[int]],
+ Depends(
+ filter_param_factory(
+ TaskInstance.try_number, list[int], FilterOptionEnum.ANY_EQUAL,
default_factory=list
+ )
+ ),
+]
+
# XCom
QueryXComKeyPatternSearch = Annotated[
diff --git
a/airflow-core/src/airflow/api_fastapi/core_api/openapi/v2-rest-api-generated.yaml
b/airflow-core/src/airflow/api_fastapi/core_api/openapi/v2-rest-api-generated.yaml
index f8e48b93917..8797232263e 100644
---
a/airflow-core/src/airflow/api_fastapi/core_api/openapi/v2-rest-api-generated.yaml
+++
b/airflow-core/src/airflow/api_fastapi/core_api/openapi/v2-rest-api-generated.yaml
@@ -5264,6 +5264,14 @@ paths:
items:
type: integer
title: Version Number
+ - name: try_number
+ in: query
+ required: false
+ schema:
+ type: array
+ items:
+ type: integer
+ title: Try Number
- name: limit
in: query
required: false
@@ -5942,6 +5950,14 @@ paths:
items:
type: integer
title: Version Number
+ - name: try_number
+ in: query
+ required: false
+ schema:
+ type: array
+ items:
+ type: integer
+ title: Try Number
- name: limit
in: query
required: false
diff --git
a/airflow-core/src/airflow/api_fastapi/core_api/routes/public/task_instances.py
b/airflow-core/src/airflow/api_fastapi/core_api/routes/public/task_instances.py
index fd5155bb89b..32887038ae5 100644
---
a/airflow-core/src/airflow/api_fastapi/core_api/routes/public/task_instances.py
+++
b/airflow-core/src/airflow/api_fastapi/core_api/routes/public/task_instances.py
@@ -46,6 +46,8 @@ from airflow.api_fastapi.common.parameters import (
QueryTIQueueFilter,
QueryTIStateFilter,
QueryTITaskDisplayNamePatternSearch,
+ QueryTITryNumberFilter,
+ # QueryTTTaskFilter,
Range,
RangeFilter,
SortParam,
@@ -96,7 +98,10 @@ task_instances_prefix = "/dagRuns/{dag_run_id}/taskInstances"
dependencies=[Depends(requires_access_dag(method="GET",
access_entity=DagAccessEntity.TASK_INSTANCE))],
)
def get_task_instance(
- dag_id: str, dag_run_id: str, task_id: str, session: SessionDep
+ dag_id: str,
+ dag_run_id: str,
+ task_id: str,
+ session: SessionDep,
) -> TaskInstanceResponse:
"""Get task instance."""
query = (
@@ -142,6 +147,7 @@ def get_mapped_task_instances(
queue: QueryTIQueueFilter,
executor: QueryTIExecutorFilter,
version_number: QueryTIDagVersionFilter,
+ try_number: QueryTITryNumberFilter,
limit: QueryLimit,
offset: QueryOffset,
order_by: Annotated[
@@ -210,6 +216,7 @@ def get_mapped_task_instances(
queue,
executor,
version_number,
+ try_number,
],
order_by=order_by,
offset=offset,
@@ -400,6 +407,7 @@ def get_task_instances(
queue: QueryTIQueueFilter,
executor: QueryTIExecutorFilter,
version_number: QueryTIDagVersionFilter,
+ try_number: QueryTITryNumberFilter,
limit: QueryLimit,
offset: QueryOffset,
order_by: Annotated[
@@ -476,6 +484,7 @@ def get_task_instances(
task_display_name_pattern,
version_number,
readable_ti_filter,
+ try_number,
],
order_by=order_by,
offset=offset,
diff --git a/airflow-core/src/airflow/ui/openapi-gen/queries/common.ts
b/airflow-core/src/airflow/ui/openapi-gen/queries/common.ts
index c23f1dc8c83..3e16c25e85c 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/queries/common.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/queries/common.ts
@@ -353,7 +353,7 @@ export const UseTaskInstanceServiceGetTaskInstanceKeyFn =
({ dagId, dagRunId, ta
export type TaskInstanceServiceGetMappedTaskInstancesDefaultResponse =
Awaited<ReturnType<typeof TaskInstanceService.getMappedTaskInstances>>;
export type TaskInstanceServiceGetMappedTaskInstancesQueryResult<TData =
TaskInstanceServiceGetMappedTaskInstancesDefaultResponse, TError = unknown> =
UseQueryResult<TData, TError>;
export const useTaskInstanceServiceGetMappedTaskInstancesKey =
"TaskInstanceServiceGetMappedTaskInstances";
-export const UseTaskInstanceServiceGetMappedTaskInstancesKeyFn = ({ dagId,
dagRunId, durationGte, durationLte, endDateGte, endDateLte, executor, limit,
logicalDateGte, logicalDateLte, offset, orderBy, pool, queue, runAfterGte,
runAfterLte, startDateGte, startDateLte, state, taskId, updatedAtGte,
updatedAtLte, versionNumber }: {
+export const UseTaskInstanceServiceGetMappedTaskInstancesKeyFn = ({ dagId,
dagRunId, durationGte, durationLte, endDateGte, endDateLte, executor, limit,
logicalDateGte, logicalDateLte, offset, orderBy, pool, queue, runAfterGte,
runAfterLte, startDateGte, startDateLte, state, taskId, tryNumber,
updatedAtGte, updatedAtLte, versionNumber }: {
dagId: string;
dagRunId: string;
durationGte?: number;
@@ -374,10 +374,11 @@ export const
UseTaskInstanceServiceGetMappedTaskInstancesKeyFn = ({ dagId, dagRu
startDateLte?: string;
state?: string[];
taskId: string;
+ tryNumber?: number[];
updatedAtGte?: string;
updatedAtLte?: string;
versionNumber?: number[];
-}, queryKey?: Array<unknown>) =>
[useTaskInstanceServiceGetMappedTaskInstancesKey, ...(queryKey ?? [{ dagId,
dagRunId, durationGte, durationLte, endDateGte, endDateLte, executor, limit,
logicalDateGte, logicalDateLte, offset, orderBy, pool, queue, runAfterGte,
runAfterLte, startDateGte, startDateLte, state, taskId, updatedAtGte,
updatedAtLte, versionNumber }])];
+}, queryKey?: Array<unknown>) =>
[useTaskInstanceServiceGetMappedTaskInstancesKey, ...(queryKey ?? [{ dagId,
dagRunId, durationGte, durationLte, endDateGte, endDateLte, executor, limit,
logicalDateGte, logicalDateLte, offset, orderBy, pool, queue, runAfterGte,
runAfterLte, startDateGte, startDateLte, state, taskId, tryNumber,
updatedAtGte, updatedAtLte, versionNumber }])];
export type
TaskInstanceServiceGetTaskInstanceDependenciesByMapIndexDefaultResponse =
Awaited<ReturnType<typeof
TaskInstanceService.getTaskInstanceDependenciesByMapIndex>>;
export type
TaskInstanceServiceGetTaskInstanceDependenciesByMapIndexQueryResult<TData =
TaskInstanceServiceGetTaskInstanceDependenciesByMapIndexDefaultResponse, TError
= unknown> = UseQueryResult<TData, TError>;
export const useTaskInstanceServiceGetTaskInstanceDependenciesByMapIndexKey =
"TaskInstanceServiceGetTaskInstanceDependenciesByMapIndex";
@@ -426,7 +427,7 @@ export const
UseTaskInstanceServiceGetMappedTaskInstanceKeyFn = ({ dagId, dagRun
export type TaskInstanceServiceGetTaskInstancesDefaultResponse =
Awaited<ReturnType<typeof TaskInstanceService.getTaskInstances>>;
export type TaskInstanceServiceGetTaskInstancesQueryResult<TData =
TaskInstanceServiceGetTaskInstancesDefaultResponse, TError = unknown> =
UseQueryResult<TData, TError>;
export const useTaskInstanceServiceGetTaskInstancesKey =
"TaskInstanceServiceGetTaskInstances";
-export const UseTaskInstanceServiceGetTaskInstancesKeyFn = ({ dagId, dagRunId,
durationGte, durationLte, endDateGte, endDateLte, executor, limit,
logicalDateGte, logicalDateLte, offset, orderBy, pool, queue, runAfterGte,
runAfterLte, startDateGte, startDateLte, state, taskDisplayNamePattern, taskId,
updatedAtGte, updatedAtLte, versionNumber }: {
+export const UseTaskInstanceServiceGetTaskInstancesKeyFn = ({ dagId, dagRunId,
durationGte, durationLte, endDateGte, endDateLte, executor, limit,
logicalDateGte, logicalDateLte, offset, orderBy, pool, queue, runAfterGte,
runAfterLte, startDateGte, startDateLte, state, taskDisplayNamePattern, taskId,
tryNumber, updatedAtGte, updatedAtLte, versionNumber }: {
dagId: string;
dagRunId: string;
durationGte?: number;
@@ -448,10 +449,11 @@ export const UseTaskInstanceServiceGetTaskInstancesKeyFn
= ({ dagId, dagRunId, d
state?: string[];
taskDisplayNamePattern?: string;
taskId?: string;
+ tryNumber?: number[];
updatedAtGte?: string;
updatedAtLte?: string;
versionNumber?: number[];
-}, queryKey?: Array<unknown>) => [useTaskInstanceServiceGetTaskInstancesKey,
...(queryKey ?? [{ dagId, dagRunId, durationGte, durationLte, endDateGte,
endDateLte, executor, limit, logicalDateGte, logicalDateLte, offset, orderBy,
pool, queue, runAfterGte, runAfterLte, startDateGte, startDateLte, state,
taskDisplayNamePattern, taskId, updatedAtGte, updatedAtLte, versionNumber }])];
+}, queryKey?: Array<unknown>) => [useTaskInstanceServiceGetTaskInstancesKey,
...(queryKey ?? [{ dagId, dagRunId, durationGte, durationLte, endDateGte,
endDateLte, executor, limit, logicalDateGte, logicalDateLte, offset, orderBy,
pool, queue, runAfterGte, runAfterLte, startDateGte, startDateLte, state,
taskDisplayNamePattern, taskId, tryNumber, updatedAtGte, updatedAtLte,
versionNumber }])];
export type TaskInstanceServiceGetTaskInstanceTryDetailsDefaultResponse =
Awaited<ReturnType<typeof TaskInstanceService.getTaskInstanceTryDetails>>;
export type TaskInstanceServiceGetTaskInstanceTryDetailsQueryResult<TData =
TaskInstanceServiceGetTaskInstanceTryDetailsDefaultResponse, TError = unknown>
= UseQueryResult<TData, TError>;
export const useTaskInstanceServiceGetTaskInstanceTryDetailsKey =
"TaskInstanceServiceGetTaskInstanceTryDetails";
diff --git a/airflow-core/src/airflow/ui/openapi-gen/queries/ensureQueryData.ts
b/airflow-core/src/airflow/ui/openapi-gen/queries/ensureQueryData.ts
index 512239d6fe8..1f9f575e4d8 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/queries/ensureQueryData.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/queries/ensureQueryData.ts
@@ -678,13 +678,14 @@ export const
ensureUseTaskInstanceServiceGetTaskInstanceData = (queryClient: Que
* @param data.queue
* @param data.executor
* @param data.versionNumber
+* @param data.tryNumber
* @param data.limit
* @param data.offset
* @param data.orderBy
* @returns TaskInstanceCollectionResponse Successful Response
* @throws ApiError
*/
-export const ensureUseTaskInstanceServiceGetMappedTaskInstancesData =
(queryClient: QueryClient, { dagId, dagRunId, durationGte, durationLte,
endDateGte, endDateLte, executor, limit, logicalDateGte, logicalDateLte,
offset, orderBy, pool, queue, runAfterGte, runAfterLte, startDateGte,
startDateLte, state, taskId, updatedAtGte, updatedAtLte, versionNumber }: {
+export const ensureUseTaskInstanceServiceGetMappedTaskInstancesData =
(queryClient: QueryClient, { dagId, dagRunId, durationGte, durationLte,
endDateGte, endDateLte, executor, limit, logicalDateGte, logicalDateLte,
offset, orderBy, pool, queue, runAfterGte, runAfterLte, startDateGte,
startDateLte, state, taskId, tryNumber, updatedAtGte, updatedAtLte,
versionNumber }: {
dagId: string;
dagRunId: string;
durationGte?: number;
@@ -705,10 +706,11 @@ export const
ensureUseTaskInstanceServiceGetMappedTaskInstancesData = (queryClie
startDateLte?: string;
state?: string[];
taskId: string;
+ tryNumber?: number[];
updatedAtGte?: string;
updatedAtLte?: string;
versionNumber?: number[];
-}) => queryClient.ensureQueryData({ queryKey:
Common.UseTaskInstanceServiceGetMappedTaskInstancesKeyFn({ dagId, dagRunId,
durationGte, durationLte, endDateGte, endDateLte, executor, limit,
logicalDateGte, logicalDateLte, offset, orderBy, pool, queue, runAfterGte,
runAfterLte, startDateGte, startDateLte, state, taskId, updatedAtGte,
updatedAtLte, versionNumber }), queryFn: () =>
TaskInstanceService.getMappedTaskInstances({ dagId, dagRunId, durationGte,
durationLte, endDateGte, endDateLte, [...]
+}) => queryClient.ensureQueryData({ queryKey:
Common.UseTaskInstanceServiceGetMappedTaskInstancesKeyFn({ dagId, dagRunId,
durationGte, durationLte, endDateGte, endDateLte, executor, limit,
logicalDateGte, logicalDateLte, offset, orderBy, pool, queue, runAfterGte,
runAfterLte, startDateGte, startDateLte, state, taskId, tryNumber,
updatedAtGte, updatedAtLte, versionNumber }), queryFn: () =>
TaskInstanceService.getMappedTaskInstances({ dagId, dagRunId, durationGte,
durationLte, endDateGte, [...]
/**
* Get Task Instance Dependencies
* Get dependencies blocking task from getting scheduled.
@@ -821,13 +823,14 @@ export const
ensureUseTaskInstanceServiceGetMappedTaskInstanceData = (queryClien
* @param data.queue
* @param data.executor
* @param data.versionNumber
+* @param data.tryNumber
* @param data.limit
* @param data.offset
* @param data.orderBy
* @returns TaskInstanceCollectionResponse Successful Response
* @throws ApiError
*/
-export const ensureUseTaskInstanceServiceGetTaskInstancesData = (queryClient:
QueryClient, { dagId, dagRunId, durationGte, durationLte, endDateGte,
endDateLte, executor, limit, logicalDateGte, logicalDateLte, offset, orderBy,
pool, queue, runAfterGte, runAfterLte, startDateGte, startDateLte, state,
taskDisplayNamePattern, taskId, updatedAtGte, updatedAtLte, versionNumber }: {
+export const ensureUseTaskInstanceServiceGetTaskInstancesData = (queryClient:
QueryClient, { dagId, dagRunId, durationGte, durationLte, endDateGte,
endDateLte, executor, limit, logicalDateGte, logicalDateLte, offset, orderBy,
pool, queue, runAfterGte, runAfterLte, startDateGte, startDateLte, state,
taskDisplayNamePattern, taskId, tryNumber, updatedAtGte, updatedAtLte,
versionNumber }: {
dagId: string;
dagRunId: string;
durationGte?: number;
@@ -849,10 +852,11 @@ export const
ensureUseTaskInstanceServiceGetTaskInstancesData = (queryClient: Qu
state?: string[];
taskDisplayNamePattern?: string;
taskId?: string;
+ tryNumber?: number[];
updatedAtGte?: string;
updatedAtLte?: string;
versionNumber?: number[];
-}) => queryClient.ensureQueryData({ queryKey:
Common.UseTaskInstanceServiceGetTaskInstancesKeyFn({ dagId, dagRunId,
durationGte, durationLte, endDateGte, endDateLte, executor, limit,
logicalDateGte, logicalDateLte, offset, orderBy, pool, queue, runAfterGte,
runAfterLte, startDateGte, startDateLte, state, taskDisplayNamePattern, taskId,
updatedAtGte, updatedAtLte, versionNumber }), queryFn: () =>
TaskInstanceService.getTaskInstances({ dagId, dagRunId, durationGte,
durationLte, endDateGte, [...]
+}) => queryClient.ensureQueryData({ queryKey:
Common.UseTaskInstanceServiceGetTaskInstancesKeyFn({ dagId, dagRunId,
durationGte, durationLte, endDateGte, endDateLte, executor, limit,
logicalDateGte, logicalDateLte, offset, orderBy, pool, queue, runAfterGte,
runAfterLte, startDateGte, startDateLte, state, taskDisplayNamePattern, taskId,
tryNumber, updatedAtGte, updatedAtLte, versionNumber }), queryFn: () =>
TaskInstanceService.getTaskInstances({ dagId, dagRunId, durationGte,
durationLte, [...]
/**
* Get Task Instance Try Details
* Get task instance details by try number.
diff --git a/airflow-core/src/airflow/ui/openapi-gen/queries/prefetch.ts
b/airflow-core/src/airflow/ui/openapi-gen/queries/prefetch.ts
index e2189434a07..83b2327c84f 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/queries/prefetch.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/queries/prefetch.ts
@@ -678,13 +678,14 @@ export const
prefetchUseTaskInstanceServiceGetTaskInstance = (queryClient: Query
* @param data.queue
* @param data.executor
* @param data.versionNumber
+* @param data.tryNumber
* @param data.limit
* @param data.offset
* @param data.orderBy
* @returns TaskInstanceCollectionResponse Successful Response
* @throws ApiError
*/
-export const prefetchUseTaskInstanceServiceGetMappedTaskInstances =
(queryClient: QueryClient, { dagId, dagRunId, durationGte, durationLte,
endDateGte, endDateLte, executor, limit, logicalDateGte, logicalDateLte,
offset, orderBy, pool, queue, runAfterGte, runAfterLte, startDateGte,
startDateLte, state, taskId, updatedAtGte, updatedAtLte, versionNumber }: {
+export const prefetchUseTaskInstanceServiceGetMappedTaskInstances =
(queryClient: QueryClient, { dagId, dagRunId, durationGte, durationLte,
endDateGte, endDateLte, executor, limit, logicalDateGte, logicalDateLte,
offset, orderBy, pool, queue, runAfterGte, runAfterLte, startDateGte,
startDateLte, state, taskId, tryNumber, updatedAtGte, updatedAtLte,
versionNumber }: {
dagId: string;
dagRunId: string;
durationGte?: number;
@@ -705,10 +706,11 @@ export const
prefetchUseTaskInstanceServiceGetMappedTaskInstances = (queryClient
startDateLte?: string;
state?: string[];
taskId: string;
+ tryNumber?: number[];
updatedAtGte?: string;
updatedAtLte?: string;
versionNumber?: number[];
-}) => queryClient.prefetchQuery({ queryKey:
Common.UseTaskInstanceServiceGetMappedTaskInstancesKeyFn({ dagId, dagRunId,
durationGte, durationLte, endDateGte, endDateLte, executor, limit,
logicalDateGte, logicalDateLte, offset, orderBy, pool, queue, runAfterGte,
runAfterLte, startDateGte, startDateLte, state, taskId, updatedAtGte,
updatedAtLte, versionNumber }), queryFn: () =>
TaskInstanceService.getMappedTaskInstances({ dagId, dagRunId, durationGte,
durationLte, endDateGte, endDateLte, e [...]
+}) => queryClient.prefetchQuery({ queryKey:
Common.UseTaskInstanceServiceGetMappedTaskInstancesKeyFn({ dagId, dagRunId,
durationGte, durationLte, endDateGte, endDateLte, executor, limit,
logicalDateGte, logicalDateLte, offset, orderBy, pool, queue, runAfterGte,
runAfterLte, startDateGte, startDateLte, state, taskId, tryNumber,
updatedAtGte, updatedAtLte, versionNumber }), queryFn: () =>
TaskInstanceService.getMappedTaskInstances({ dagId, dagRunId, durationGte,
durationLte, endDateGte, en [...]
/**
* Get Task Instance Dependencies
* Get dependencies blocking task from getting scheduled.
@@ -821,13 +823,14 @@ export const
prefetchUseTaskInstanceServiceGetMappedTaskInstance = (queryClient:
* @param data.queue
* @param data.executor
* @param data.versionNumber
+* @param data.tryNumber
* @param data.limit
* @param data.offset
* @param data.orderBy
* @returns TaskInstanceCollectionResponse Successful Response
* @throws ApiError
*/
-export const prefetchUseTaskInstanceServiceGetTaskInstances = (queryClient:
QueryClient, { dagId, dagRunId, durationGte, durationLte, endDateGte,
endDateLte, executor, limit, logicalDateGte, logicalDateLte, offset, orderBy,
pool, queue, runAfterGte, runAfterLte, startDateGte, startDateLte, state,
taskDisplayNamePattern, taskId, updatedAtGte, updatedAtLte, versionNumber }: {
+export const prefetchUseTaskInstanceServiceGetTaskInstances = (queryClient:
QueryClient, { dagId, dagRunId, durationGte, durationLte, endDateGte,
endDateLte, executor, limit, logicalDateGte, logicalDateLte, offset, orderBy,
pool, queue, runAfterGte, runAfterLte, startDateGte, startDateLte, state,
taskDisplayNamePattern, taskId, tryNumber, updatedAtGte, updatedAtLte,
versionNumber }: {
dagId: string;
dagRunId: string;
durationGte?: number;
@@ -849,10 +852,11 @@ export const
prefetchUseTaskInstanceServiceGetTaskInstances = (queryClient: Quer
state?: string[];
taskDisplayNamePattern?: string;
taskId?: string;
+ tryNumber?: number[];
updatedAtGte?: string;
updatedAtLte?: string;
versionNumber?: number[];
-}) => queryClient.prefetchQuery({ queryKey:
Common.UseTaskInstanceServiceGetTaskInstancesKeyFn({ dagId, dagRunId,
durationGte, durationLte, endDateGte, endDateLte, executor, limit,
logicalDateGte, logicalDateLte, offset, orderBy, pool, queue, runAfterGte,
runAfterLte, startDateGte, startDateLte, state, taskDisplayNamePattern, taskId,
updatedAtGte, updatedAtLte, versionNumber }), queryFn: () =>
TaskInstanceService.getTaskInstances({ dagId, dagRunId, durationGte,
durationLte, endDateGte, e [...]
+}) => queryClient.prefetchQuery({ queryKey:
Common.UseTaskInstanceServiceGetTaskInstancesKeyFn({ dagId, dagRunId,
durationGte, durationLte, endDateGte, endDateLte, executor, limit,
logicalDateGte, logicalDateLte, offset, orderBy, pool, queue, runAfterGte,
runAfterLte, startDateGte, startDateLte, state, taskDisplayNamePattern, taskId,
tryNumber, updatedAtGte, updatedAtLte, versionNumber }), queryFn: () =>
TaskInstanceService.getTaskInstances({ dagId, dagRunId, durationGte,
durationLte, en [...]
/**
* Get Task Instance Try Details
* Get task instance details by try number.
diff --git a/airflow-core/src/airflow/ui/openapi-gen/queries/queries.ts
b/airflow-core/src/airflow/ui/openapi-gen/queries/queries.ts
index bb0afe4e25e..324f01c4e7e 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/queries/queries.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/queries/queries.ts
@@ -678,13 +678,14 @@ export const useTaskInstanceServiceGetTaskInstance =
<TData = Common.TaskInstanc
* @param data.queue
* @param data.executor
* @param data.versionNumber
+* @param data.tryNumber
* @param data.limit
* @param data.offset
* @param data.orderBy
* @returns TaskInstanceCollectionResponse Successful Response
* @throws ApiError
*/
-export const useTaskInstanceServiceGetMappedTaskInstances = <TData =
Common.TaskInstanceServiceGetMappedTaskInstancesDefaultResponse, TError =
unknown, TQueryKey extends Array<unknown> = unknown[]>({ dagId, dagRunId,
durationGte, durationLte, endDateGte, endDateLte, executor, limit,
logicalDateGte, logicalDateLte, offset, orderBy, pool, queue, runAfterGte,
runAfterLte, startDateGte, startDateLte, state, taskId, updatedAtGte,
updatedAtLte, versionNumber }: {
+export const useTaskInstanceServiceGetMappedTaskInstances = <TData =
Common.TaskInstanceServiceGetMappedTaskInstancesDefaultResponse, TError =
unknown, TQueryKey extends Array<unknown> = unknown[]>({ dagId, dagRunId,
durationGte, durationLte, endDateGte, endDateLte, executor, limit,
logicalDateGte, logicalDateLte, offset, orderBy, pool, queue, runAfterGte,
runAfterLte, startDateGte, startDateLte, state, taskId, tryNumber,
updatedAtGte, updatedAtLte, versionNumber }: {
dagId: string;
dagRunId: string;
durationGte?: number;
@@ -705,10 +706,11 @@ export const useTaskInstanceServiceGetMappedTaskInstances
= <TData = Common.Task
startDateLte?: string;
state?: string[];
taskId: string;
+ tryNumber?: number[];
updatedAtGte?: string;
updatedAtLte?: string;
versionNumber?: number[];
-}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>,
"queryKey" | "queryFn">) => useQuery<TData, TError>({ queryKey:
Common.UseTaskInstanceServiceGetMappedTaskInstancesKeyFn({ dagId, dagRunId,
durationGte, durationLte, endDateGte, endDateLte, executor, limit,
logicalDateGte, logicalDateLte, offset, orderBy, pool, queue, runAfterGte,
runAfterLte, startDateGte, startDateLte, state, taskId, updatedAtGte,
updatedAtLte, versionNumber }, queryKey), queryFn: () => TaskInstanc [...]
+}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>,
"queryKey" | "queryFn">) => useQuery<TData, TError>({ queryKey:
Common.UseTaskInstanceServiceGetMappedTaskInstancesKeyFn({ dagId, dagRunId,
durationGte, durationLte, endDateGte, endDateLte, executor, limit,
logicalDateGte, logicalDateLte, offset, orderBy, pool, queue, runAfterGte,
runAfterLte, startDateGte, startDateLte, state, taskId, tryNumber,
updatedAtGte, updatedAtLte, versionNumber }, queryKey), queryFn: () => [...]
/**
* Get Task Instance Dependencies
* Get dependencies blocking task from getting scheduled.
@@ -821,13 +823,14 @@ export const useTaskInstanceServiceGetMappedTaskInstance
= <TData = Common.TaskI
* @param data.queue
* @param data.executor
* @param data.versionNumber
+* @param data.tryNumber
* @param data.limit
* @param data.offset
* @param data.orderBy
* @returns TaskInstanceCollectionResponse Successful Response
* @throws ApiError
*/
-export const useTaskInstanceServiceGetTaskInstances = <TData =
Common.TaskInstanceServiceGetTaskInstancesDefaultResponse, TError = unknown,
TQueryKey extends Array<unknown> = unknown[]>({ dagId, dagRunId, durationGte,
durationLte, endDateGte, endDateLte, executor, limit, logicalDateGte,
logicalDateLte, offset, orderBy, pool, queue, runAfterGte, runAfterLte,
startDateGte, startDateLte, state, taskDisplayNamePattern, taskId,
updatedAtGte, updatedAtLte, versionNumber }: {
+export const useTaskInstanceServiceGetTaskInstances = <TData =
Common.TaskInstanceServiceGetTaskInstancesDefaultResponse, TError = unknown,
TQueryKey extends Array<unknown> = unknown[]>({ dagId, dagRunId, durationGte,
durationLte, endDateGte, endDateLte, executor, limit, logicalDateGte,
logicalDateLte, offset, orderBy, pool, queue, runAfterGte, runAfterLte,
startDateGte, startDateLte, state, taskDisplayNamePattern, taskId, tryNumber,
updatedAtGte, updatedAtLte, versionNumber }: {
dagId: string;
dagRunId: string;
durationGte?: number;
@@ -849,10 +852,11 @@ export const useTaskInstanceServiceGetTaskInstances =
<TData = Common.TaskInstan
state?: string[];
taskDisplayNamePattern?: string;
taskId?: string;
+ tryNumber?: number[];
updatedAtGte?: string;
updatedAtLte?: string;
versionNumber?: number[];
-}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>,
"queryKey" | "queryFn">) => useQuery<TData, TError>({ queryKey:
Common.UseTaskInstanceServiceGetTaskInstancesKeyFn({ dagId, dagRunId,
durationGte, durationLte, endDateGte, endDateLte, executor, limit,
logicalDateGte, logicalDateLte, offset, orderBy, pool, queue, runAfterGte,
runAfterLte, startDateGte, startDateLte, state, taskDisplayNamePattern, taskId,
updatedAtGte, updatedAtLte, versionNumber }, queryKey), queryFn: [...]
+}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>,
"queryKey" | "queryFn">) => useQuery<TData, TError>({ queryKey:
Common.UseTaskInstanceServiceGetTaskInstancesKeyFn({ dagId, dagRunId,
durationGte, durationLte, endDateGte, endDateLte, executor, limit,
logicalDateGte, logicalDateLte, offset, orderBy, pool, queue, runAfterGte,
runAfterLte, startDateGte, startDateLte, state, taskDisplayNamePattern, taskId,
tryNumber, updatedAtGte, updatedAtLte, versionNumber }, queryKey [...]
/**
* Get Task Instance Try Details
* Get task instance details by try number.
diff --git a/airflow-core/src/airflow/ui/openapi-gen/queries/suspense.ts
b/airflow-core/src/airflow/ui/openapi-gen/queries/suspense.ts
index 4abb3f7b916..8613bd6e9d4 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/queries/suspense.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/queries/suspense.ts
@@ -678,13 +678,14 @@ export const
useTaskInstanceServiceGetTaskInstanceSuspense = <TData = Common.Tas
* @param data.queue
* @param data.executor
* @param data.versionNumber
+* @param data.tryNumber
* @param data.limit
* @param data.offset
* @param data.orderBy
* @returns TaskInstanceCollectionResponse Successful Response
* @throws ApiError
*/
-export const useTaskInstanceServiceGetMappedTaskInstancesSuspense = <TData =
Common.TaskInstanceServiceGetMappedTaskInstancesDefaultResponse, TError =
unknown, TQueryKey extends Array<unknown> = unknown[]>({ dagId, dagRunId,
durationGte, durationLte, endDateGte, endDateLte, executor, limit,
logicalDateGte, logicalDateLte, offset, orderBy, pool, queue, runAfterGte,
runAfterLte, startDateGte, startDateLte, state, taskId, updatedAtGte,
updatedAtLte, versionNumber }: {
+export const useTaskInstanceServiceGetMappedTaskInstancesSuspense = <TData =
Common.TaskInstanceServiceGetMappedTaskInstancesDefaultResponse, TError =
unknown, TQueryKey extends Array<unknown> = unknown[]>({ dagId, dagRunId,
durationGte, durationLte, endDateGte, endDateLte, executor, limit,
logicalDateGte, logicalDateLte, offset, orderBy, pool, queue, runAfterGte,
runAfterLte, startDateGte, startDateLte, state, taskId, tryNumber,
updatedAtGte, updatedAtLte, versionNumber }: {
dagId: string;
dagRunId: string;
durationGte?: number;
@@ -705,10 +706,11 @@ export const
useTaskInstanceServiceGetMappedTaskInstancesSuspense = <TData = Com
startDateLte?: string;
state?: string[];
taskId: string;
+ tryNumber?: number[];
updatedAtGte?: string;
updatedAtLte?: string;
versionNumber?: number[];
-}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>,
"queryKey" | "queryFn">) => useSuspenseQuery<TData, TError>({ queryKey:
Common.UseTaskInstanceServiceGetMappedTaskInstancesKeyFn({ dagId, dagRunId,
durationGte, durationLte, endDateGte, endDateLte, executor, limit,
logicalDateGte, logicalDateLte, offset, orderBy, pool, queue, runAfterGte,
runAfterLte, startDateGte, startDateLte, state, taskId, updatedAtGte,
updatedAtLte, versionNumber }, queryKey), queryFn: () => Tas [...]
+}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>,
"queryKey" | "queryFn">) => useSuspenseQuery<TData, TError>({ queryKey:
Common.UseTaskInstanceServiceGetMappedTaskInstancesKeyFn({ dagId, dagRunId,
durationGte, durationLte, endDateGte, endDateLte, executor, limit,
logicalDateGte, logicalDateLte, offset, orderBy, pool, queue, runAfterGte,
runAfterLte, startDateGte, startDateLte, state, taskId, tryNumber,
updatedAtGte, updatedAtLte, versionNumber }, queryKey), queryFn [...]
/**
* Get Task Instance Dependencies
* Get dependencies blocking task from getting scheduled.
@@ -821,13 +823,14 @@ export const
useTaskInstanceServiceGetMappedTaskInstanceSuspense = <TData = Comm
* @param data.queue
* @param data.executor
* @param data.versionNumber
+* @param data.tryNumber
* @param data.limit
* @param data.offset
* @param data.orderBy
* @returns TaskInstanceCollectionResponse Successful Response
* @throws ApiError
*/
-export const useTaskInstanceServiceGetTaskInstancesSuspense = <TData =
Common.TaskInstanceServiceGetTaskInstancesDefaultResponse, TError = unknown,
TQueryKey extends Array<unknown> = unknown[]>({ dagId, dagRunId, durationGte,
durationLte, endDateGte, endDateLte, executor, limit, logicalDateGte,
logicalDateLte, offset, orderBy, pool, queue, runAfterGte, runAfterLte,
startDateGte, startDateLte, state, taskDisplayNamePattern, taskId,
updatedAtGte, updatedAtLte, versionNumber }: {
+export const useTaskInstanceServiceGetTaskInstancesSuspense = <TData =
Common.TaskInstanceServiceGetTaskInstancesDefaultResponse, TError = unknown,
TQueryKey extends Array<unknown> = unknown[]>({ dagId, dagRunId, durationGte,
durationLte, endDateGte, endDateLte, executor, limit, logicalDateGte,
logicalDateLte, offset, orderBy, pool, queue, runAfterGte, runAfterLte,
startDateGte, startDateLte, state, taskDisplayNamePattern, taskId, tryNumber,
updatedAtGte, updatedAtLte, versionNumber }: {
dagId: string;
dagRunId: string;
durationGte?: number;
@@ -849,10 +852,11 @@ export const
useTaskInstanceServiceGetTaskInstancesSuspense = <TData = Common.Ta
state?: string[];
taskDisplayNamePattern?: string;
taskId?: string;
+ tryNumber?: number[];
updatedAtGte?: string;
updatedAtLte?: string;
versionNumber?: number[];
-}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>,
"queryKey" | "queryFn">) => useSuspenseQuery<TData, TError>({ queryKey:
Common.UseTaskInstanceServiceGetTaskInstancesKeyFn({ dagId, dagRunId,
durationGte, durationLte, endDateGte, endDateLte, executor, limit,
logicalDateGte, logicalDateLte, offset, orderBy, pool, queue, runAfterGte,
runAfterLte, startDateGte, startDateLte, state, taskDisplayNamePattern, taskId,
updatedAtGte, updatedAtLte, versionNumber }, queryKey), [...]
+}, queryKey?: TQueryKey, options?: Omit<UseQueryOptions<TData, TError>,
"queryKey" | "queryFn">) => useSuspenseQuery<TData, TError>({ queryKey:
Common.UseTaskInstanceServiceGetTaskInstancesKeyFn({ dagId, dagRunId,
durationGte, durationLte, endDateGte, endDateLte, executor, limit,
logicalDateGte, logicalDateLte, offset, orderBy, pool, queue, runAfterGte,
runAfterLte, startDateGte, startDateLte, state, taskDisplayNamePattern, taskId,
tryNumber, updatedAtGte, updatedAtLte, versionNumber }, [...]
/**
* Get Task Instance Try Details
* Get task instance details by try number.
diff --git a/airflow-core/src/airflow/ui/openapi-gen/requests/services.gen.ts
b/airflow-core/src/airflow/ui/openapi-gen/requests/services.gen.ts
index 106193c55b8..a94f7397619 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/requests/services.gen.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/requests/services.gen.ts
@@ -1981,6 +1981,7 @@ export class TaskInstanceService {
* @param data.queue
* @param data.executor
* @param data.versionNumber
+ * @param data.tryNumber
* @param data.limit
* @param data.offset
* @param data.orderBy
@@ -2014,6 +2015,7 @@ export class TaskInstanceService {
queue: data.queue,
executor: data.executor,
version_number: data.versionNumber,
+ try_number: data.tryNumber,
limit: data.limit,
offset: data.offset,
order_by: data.orderBy
@@ -2247,6 +2249,7 @@ export class TaskInstanceService {
* @param data.queue
* @param data.executor
* @param data.versionNumber
+ * @param data.tryNumber
* @param data.limit
* @param data.offset
* @param data.orderBy
@@ -2281,6 +2284,7 @@ export class TaskInstanceService {
queue: data.queue,
executor: data.executor,
version_number: data.versionNumber,
+ try_number: data.tryNumber,
limit: data.limit,
offset: data.offset,
order_by: data.orderBy
diff --git a/airflow-core/src/airflow/ui/openapi-gen/requests/types.gen.ts
b/airflow-core/src/airflow/ui/openapi-gen/requests/types.gen.ts
index 2ed7cb77985..c425e586bb9 100644
--- a/airflow-core/src/airflow/ui/openapi-gen/requests/types.gen.ts
+++ b/airflow-core/src/airflow/ui/openapi-gen/requests/types.gen.ts
@@ -2515,6 +2515,7 @@ export type GetMappedTaskInstancesData = {
startDateLte?: string | null;
state?: Array<(string)>;
taskId: string;
+ tryNumber?: Array<(number)>;
updatedAtGte?: string | null;
updatedAtLte?: string | null;
versionNumber?: Array<(number)>;
@@ -2603,6 +2604,7 @@ export type GetTaskInstancesData = {
*/
taskDisplayNamePattern?: string | null;
taskId?: string | null;
+ tryNumber?: Array<(number)>;
updatedAtGte?: string | null;
updatedAtLte?: string | null;
versionNumber?: Array<(number)>;
diff --git
a/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_task_instances.py
b/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_task_instances.py
index 0284667273e..1100d9f25bf 100644
---
a/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_task_instances.py
+++
b/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_task_instances.py
@@ -1133,6 +1133,21 @@ class TestGetTaskInstances(TestTaskInstanceEndpoint):
# the create_task_instances method
id="test multiple version numbers filter",
),
+ pytest.param(
+ [
+ {"try_number": 0},
+ {"try_number": 0},
+ {"try_number": 1},
+ {"try_number": 1},
+ {"try_number": 1},
+ {"try_number": 2},
+ ],
+ True,
+
("/dags/example_python_operator/dagRuns/TEST_DAG_RUN_ID/taskInstances"),
+ {"try_number": [0, 1]},
+ 5,
+ id="test_try_number_filter",
+ ),
],
)
@pytest.mark.usefixtures("make_dag_with_multiple_versions")