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 a19c3dd19bd Fix DAGs list page Last Run/Next Run going stale after 
runs complete (#70667)
a19c3dd19bd is described below

commit a19c3dd19bd4809dfb44577116b4a4afd3df8bed
Author: Bramhanand Lingala <[email protected]>
AuthorDate: Thu Aug 13 20:37:06 2026 +0530

    Fix DAGs list page Last Run/Next Run going stale after runs complete 
(#70667)
    
    * Fix DAGs list page Last Run/Next Run going stale after runs complete
    
    * Address review: back off refetch 10x instead of disabling, drop redundant 
comment
    
    * fix(ui): pass `dags` to useDagRunStateCounts to fix TS2345 in DagsList
---
 .../src/airflow/ui/src/queries/useDagRunStateCounts.tsx    |  5 +++--
 airflow-core/src/airflow/ui/src/queries/useDags.tsx        | 14 ++++++++------
 2 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/airflow-core/src/airflow/ui/src/queries/useDagRunStateCounts.tsx 
b/airflow-core/src/airflow/ui/src/queries/useDagRunStateCounts.tsx
index 4e152fecfec..6f1380fea87 100644
--- a/airflow-core/src/airflow/ui/src/queries/useDagRunStateCounts.tsx
+++ b/airflow-core/src/airflow/ui/src/queries/useDagRunStateCounts.tsx
@@ -29,7 +29,7 @@ export const useDagRunStateCounts = ({
   // need to be loaded before it knows whether to poll — avoids a 
chicken-and-egg.
   readonly dags: ReadonlyArray<DAGWithLatestDagRunsResponse> | undefined;
 }) => {
-  const refetchInterval = useAutoRefresh({});
+  const refetchInterval = useAutoRefresh({ checkPendingRuns: true });
   const hasPendingRun =
     dags?.some((dag) => !dag.is_paused && dag.latest_dag_runs.some((run) => 
isStatePending(run.state))) ??
     false;
@@ -40,6 +40,7 @@ export const useDagRunStateCounts = ({
   return useDagServiceGetDagRunStateCountsUi({ dagIds: sortedDagIds }, 
undefined, {
     enabled: sortedDagIds.length > 0,
     placeholderData: (prev) => prev,
-    refetchInterval: hasPendingRun ? refetchInterval : false,
+    refetchInterval:
+      refetchInterval === false ? false : hasPendingRun ? refetchInterval : 
refetchInterval * 10,
   });
 };
diff --git a/airflow-core/src/airflow/ui/src/queries/useDags.tsx 
b/airflow-core/src/airflow/ui/src/queries/useDags.tsx
index 759180cb16a..566f0a1d94b 100644
--- a/airflow-core/src/airflow/ui/src/queries/useDags.tsx
+++ b/airflow-core/src/airflow/ui/src/queries/useDags.tsx
@@ -59,7 +59,7 @@ export const useDags = ({
   teams?: Array<string>;
   timetableType?: Array<string>;
 }) => {
-  const refetchInterval = useAutoRefresh({});
+  const refetchInterval = useAutoRefresh({ checkPendingRuns: true });
 
   const { data, error, isFetching, isLoading } = useDagServiceGetDagsUi(
     {
@@ -85,11 +85,13 @@ export const useDags = ({
     undefined,
     {
       refetchInterval: (query) =>
-        query.state.data?.dags.some(
-          (dag) => !dag.is_paused && dag.latest_dag_runs.some((dr) => 
isStatePending(dr.state)),
-        )
-          ? refetchInterval
-          : false,
+        refetchInterval === false
+          ? false
+          : query.state.data?.dags.some(
+                (dag) => !dag.is_paused && dag.latest_dag_runs.some((dr) => 
isStatePending(dr.state)),
+              )
+            ? refetchInterval
+            : refetchInterval * 10,
     },
   );
 

Reply via email to