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,
},
);