From 1e972d58452be501d6ad83472f526aca8b2f4b06 Mon Sep 17 00:00:00 2001 From: Dheeraj Turaga Date: Mon, 16 Mar 2026 23:09:05 -0500 Subject: [PATCH] Fix edge executor UI navigation when behind reverse proxy with subpath The /api/v2/version call in NavTabs used a hardcoded absolute path, which 404s when Airflow is served under a subpath (e.g. /airflow/). This prevented the nav tabs from rendering, forcing users to navigate via inline table links that lacked relative=path, causing URLs to append instead of replace (e.g. /worker/jobs/worker/...). --- .../providers/edge3/plugins/www/src/layouts/NavTabs.tsx | 3 ++- .../providers/edge3/plugins/www/src/pages/JobsPage.tsx | 2 +- .../providers/edge3/plugins/www/src/pages/WorkerPage.tsx | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/providers/edge3/src/airflow/providers/edge3/plugins/www/src/layouts/NavTabs.tsx b/providers/edge3/src/airflow/providers/edge3/plugins/www/src/layouts/NavTabs.tsx index 070ad2a264320..6e534647f519a 100644 --- a/providers/edge3/src/airflow/providers/edge3/plugins/www/src/layouts/NavTabs.tsx +++ b/providers/edge3/src/airflow/providers/edge3/plugins/www/src/layouts/NavTabs.tsx @@ -19,6 +19,7 @@ import { Center, Flex } from "@chakra-ui/react"; import axios from "axios"; import { useQuery } from "@tanstack/react-query"; +import { OpenAPI } from "openapi/requests/core/OpenAPI"; import { useRef, type ReactNode } from "react"; import { NavLink } from "react-router-dom"; @@ -34,7 +35,7 @@ export const NavTabs = ({ tabs }: Props) => { const { data } = useQuery<{version: string, git_version: string | null}>({ queryFn: async () => { - const res = await axios.get("/api/v2/version"); + const res = await axios.get(`${OpenAPI.BASE}/api/v2/version`); return res.data; }, queryKey: ["appVersion"], diff --git a/providers/edge3/src/airflow/providers/edge3/plugins/www/src/pages/JobsPage.tsx b/providers/edge3/src/airflow/providers/edge3/plugins/www/src/pages/JobsPage.tsx index a2ce7213a3eb4..cf86d89dbdb9d 100644 --- a/providers/edge3/src/airflow/providers/edge3/plugins/www/src/pages/JobsPage.tsx +++ b/providers/edge3/src/airflow/providers/edge3/plugins/www/src/pages/JobsPage.tsx @@ -240,7 +240,7 @@ export const JobsPage = () => { {job.queued_dttm ? : undefined} - {job.edge_worker} + {job.edge_worker} {job.last_update ? : undefined} diff --git a/providers/edge3/src/airflow/providers/edge3/plugins/www/src/pages/WorkerPage.tsx b/providers/edge3/src/airflow/providers/edge3/plugins/www/src/pages/WorkerPage.tsx index e91edee97e3ab..6f1758f2ef37e 100644 --- a/providers/edge3/src/airflow/providers/edge3/plugins/www/src/pages/WorkerPage.tsx +++ b/providers/edge3/src/airflow/providers/edge3/plugins/www/src/pages/WorkerPage.tsx @@ -163,7 +163,7 @@ export const WorkerPage = () => { {worker.queues.map((queue) => ( - {queue} + {queue} ))} @@ -179,7 +179,7 @@ export const WorkerPage = () => { {worker.jobs_active !== undefined && worker.jobs_active > 0 ? ( - + {worker.jobs_active} ) : (