diff --git a/airflow-core/src/airflow/ui/src/queries/useClearTaskInstances.ts b/airflow-core/src/airflow/ui/src/queries/useClearTaskInstances.ts index ed3431bba08e3..b20dae1075f07 100644 --- a/airflow-core/src/airflow/ui/src/queries/useClearTaskInstances.ts +++ b/airflow-core/src/airflow/ui/src/queries/useClearTaskInstances.ts @@ -26,6 +26,7 @@ import { useTaskInstanceServicePostClearTaskInstances, UseGridServiceGetGridRunsKeyFn, UseGridServiceGetGridTiSummariesKeyFn, + useGridServiceGetGridTiSummariesKey, } from "openapi/queries"; import type { ClearTaskInstancesBody, TaskInstanceCollectionResponse } from "openapi/requests/types.gen"; import { toaster } from "src/components/ui"; @@ -78,6 +79,10 @@ export const useClearTaskInstances = ({ ), ]; + // Check if this clear operation affects multiple DAG runs + const { include_future: includeFuture, include_past: includePast } = variables.requestBody; + const affectsMultipleRuns = includeFuture === true || includePast === true; + const queryKeys = [ ...taskInstanceKeys, UseDagRunServiceGetDagRunKeyFn({ dagId, dagRunId }), @@ -85,7 +90,9 @@ export const useClearTaskInstances = ({ [useClearTaskInstancesDryRunKey, dagId], [usePatchTaskInstanceDryRunKey, dagId, dagRunId], UseGridServiceGetGridRunsKeyFn({ dagId }, [{ dagId }]), - UseGridServiceGetGridTiSummariesKeyFn({ dagId, runId: dagRunId }, [{ dagId, runId: dagRunId }]), + affectsMultipleRuns + ? [useGridServiceGetGridTiSummariesKey, { dagId }] + : UseGridServiceGetGridTiSummariesKeyFn({ dagId, runId: dagRunId }), ]; await Promise.all(queryKeys.map((key) => queryClient.invalidateQueries({ queryKey: key }))); diff --git a/airflow-core/src/airflow/ui/src/queries/usePatchTaskInstance.ts b/airflow-core/src/airflow/ui/src/queries/usePatchTaskInstance.ts index bc2747b1a575b..c1ae88cacb166 100644 --- a/airflow-core/src/airflow/ui/src/queries/usePatchTaskInstance.ts +++ b/airflow-core/src/airflow/ui/src/queries/usePatchTaskInstance.ts @@ -26,6 +26,7 @@ import { useTaskInstanceServicePatchTaskInstance, UseGridServiceGetGridRunsKeyFn, UseGridServiceGetGridTiSummariesKeyFn, + useGridServiceGetGridTiSummariesKey, } from "openapi/queries"; import { toaster } from "src/components/ui"; @@ -58,7 +59,19 @@ export const usePatchTaskInstance = ({ }); }; - const onSuccessFn = async () => { + const onSuccessFn = async ( + _: unknown, + variables: { + dagId: string; + dagRunId: string; + requestBody: { include_future?: boolean; include_past?: boolean }; + taskId: string; + }, + ) => { + // Check if this patch operation affects multiple DAG runs + const { include_future: includeFuture, include_past: includePast } = variables.requestBody; + const affectsMultipleRuns = includeFuture === true || includePast === true; + const queryKeys = [ UseTaskInstanceServiceGetTaskInstanceKeyFn({ dagId, dagRunId, taskId }), UseTaskInstanceServiceGetMappedTaskInstanceKeyFn({ dagId, dagRunId, mapIndex, taskId }), @@ -66,7 +79,9 @@ export const usePatchTaskInstance = ({ [usePatchTaskInstanceDryRunKey, dagId, dagRunId, { mapIndex, taskId }], [useClearTaskInstancesDryRunKey, dagId], UseGridServiceGetGridRunsKeyFn({ dagId }, [{ dagId }]), - UseGridServiceGetGridTiSummariesKeyFn({ dagId, runId: dagRunId }, [{ dagId, runId: dagRunId }]), + affectsMultipleRuns + ? [useGridServiceGetGridTiSummariesKey, { dagId }] + : UseGridServiceGetGridTiSummariesKeyFn({ dagId, runId: dagRunId }), ]; await Promise.all(queryKeys.map((key) => queryClient.invalidateQueries({ queryKey: key })));