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 05eda5643d3 perf: optimize grid view refresh pressure on the API 
(#62085)
05eda5643d3 is described below

commit 05eda5643d3df9d742e531c6bd5516fd80f38d27
Author: Vic Wen <[email protected]>
AuthorDate: Thu Feb 19 00:25:17 2026 +0800

    perf: optimize grid view refresh pressure on the API (#62085)
---
 .../airflow/ui/src/layouts/Details/Grid/TaskInstancesColumn.tsx  | 9 +++++++--
 airflow-core/src/airflow/ui/src/queries/useGridTISummaries.ts    | 9 ++++++++-
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git 
a/airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskInstancesColumn.tsx 
b/airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskInstancesColumn.tsx
index 4b05e40032a..dcbf7cc2120 100644
--- 
a/airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskInstancesColumn.tsx
+++ 
b/airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskInstancesColumn.tsx
@@ -39,7 +39,13 @@ const ROW_HEIGHT = 20;
 
 export const TaskInstancesColumn = ({ nodes, onCellClick, run, virtualItems }: 
Props) => {
   const { dagId = "", runId } = useParams();
-  const { data: gridTISummaries } = useGridTiSummaries({ dagId, runId: 
run.run_id, state: run.state });
+  const isSelected = runId === run.run_id;
+  const { data: gridTISummaries } = useGridTiSummaries({
+    dagId,
+    isSelected,
+    runId: run.run_id,
+    state: run.state,
+  });
   const { hoveredRunId, setHoveredRunId } = useHover();
 
   const itemsToRender =
@@ -52,7 +58,6 @@ export const TaskInstancesColumn = ({ nodes, onCellClick, 
run, virtualItems }: P
     taskInstanceMap.set(ti.task_id, ti);
   }
 
-  const isSelected = runId === run.run_id;
   const isHovered = hoveredRunId === run.run_id;
 
   const handleMouseEnter = () => setHoveredRunId(run.run_id);
diff --git a/airflow-core/src/airflow/ui/src/queries/useGridTISummaries.ts 
b/airflow-core/src/airflow/ui/src/queries/useGridTISummaries.ts
index 51f07ce99e5..6b75402ab6c 100644
--- a/airflow-core/src/airflow/ui/src/queries/useGridTISummaries.ts
+++ b/airflow-core/src/airflow/ui/src/queries/useGridTISummaries.ts
@@ -23,15 +23,22 @@ import { isStatePending, useAutoRefresh } from "src/utils";
 export const useGridTiSummaries = ({
   dagId,
   enabled,
+  isSelected,
   runId,
   state,
 }: {
   dagId: string;
   enabled?: boolean;
+  isSelected?: boolean;
   runId: string;
   state?: TaskInstanceState | null | undefined;
 }) => {
-  const refetchInterval = useAutoRefresh({ dagId });
+  const baseRefetchInterval = useAutoRefresh({ dagId });
+  const slowRefreshMultiplier = 5;
+  const refetchInterval =
+    typeof baseRefetchInterval === "number"
+      ? baseRefetchInterval * (isSelected ? 1 : slowRefreshMultiplier)
+      : baseRefetchInterval;
 
   const { data: gridTiSummaries, ...rest } = useGridServiceGetGridTiSummaries(
     {

Reply via email to