This is an automated email from the ASF dual-hosted git repository.

choo121600 pushed a commit to branch v3-3-test
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/v3-3-test by this push:
     new 1d6dd85bd1a [v3-3-test] Hide run-on-latest-version option for 
non-versioned bundles (#70427) (#70702)
1d6dd85bd1a is described below

commit 1d6dd85bd1a15a342881b87a344f5b0681c54dcb
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Thu Jul 30 14:16:07 2026 +0900

    [v3-3-test] Hide run-on-latest-version option for non-versioned bundles 
(#70427) (#70702)
    
    * UI: Hide "run with latest bundle version" clear option for non-versioned 
bundles
    
    * UI: Preserve DAG-version check for run-on-latest visibility
    
    * UI: Use run bundle_version directly, fix comment and Dag naming
    (cherry picked from commit 690d43da8c472785165fcce2cc622255da03d944)
    
    Co-authored-by: WonYong Jang <[email protected]>
---
 .../ui/src/components/Clear/Run/ClearRunDialog.tsx  | 21 +++++++++++++--------
 .../Clear/TaskInstance/runOnLatestVersion.test.ts   | 17 +++++++++++++----
 .../Clear/TaskInstance/runOnLatestVersion.ts        |  3 ++-
 3 files changed, 28 insertions(+), 13 deletions(-)

diff --git 
a/airflow-core/src/airflow/ui/src/components/Clear/Run/ClearRunDialog.tsx 
b/airflow-core/src/airflow/ui/src/components/Clear/Run/ClearRunDialog.tsx
index 425ce9f8236..c864f0b047c 100644
--- a/airflow-core/src/airflow/ui/src/components/Clear/Run/ClearRunDialog.tsx
+++ b/airflow-core/src/airflow/ui/src/components/Clear/Run/ClearRunDialog.tsx
@@ -24,6 +24,7 @@ import { CgRedo } from "react-icons/cg";
 import { useDagServiceGetDagDetails } from "openapi/queries";
 import type { DAGRunResponse } from "openapi/requests/types.gen";
 import { ActionAccordion } from "src/components/ActionAccordion";
+import { getRunOnLatestVersionState } from 
"src/components/Clear/TaskInstance/runOnLatestVersion";
 import { useRerunWithLatestVersion } from 
"src/components/Clear/useRerunWithLatestVersion";
 import { Checkbox, Dialog } from "src/components/ui";
 import SegmentedControl from "src/components/ui/SegmentedControl";
@@ -91,14 +92,18 @@ const ClearRunDialog = ({ dagRun, onClose, open }: Props) 
=> {
     onSuccessConfirm: handleClose,
   });
 
-  // Check if DAG versions differ (works for both bundle-versioned and local 
bundles)
-  const latestDagVersionNumber = 
dagDetails?.latest_dag_version?.version_number;
-  const dagRunVersionNumber = dagRun.dag_versions.at(-1)?.version_number;
-  const versionsDiffer =
-    latestDagVersionNumber !== undefined &&
-    dagRunVersionNumber !== undefined &&
-    latestDagVersionNumber !== dagRunVersionNumber;
-  const shouldShowBundleVersionOption = versionsDiffer && !onlyNew;
+  // Non-versioned bundles (e.g. LocalDagBundle) always leave bundle_version 
null and
+  // resolve to the latest serialized Dag at run time, so "run on latest" is a 
no-op there.
+  // Offer it only when re-running on the latest would actually change the 
outcome:
+  // the run's Dag version differs from the latest while the bundle is 
versioned
+  // (latest bundle_version present), or the run's bundle version differs from 
the latest.
+  const { shouldShowRunOnLatestOption } = getRunOnLatestVersionState({
+    latestBundleVersion: dagDetails?.bundle_version,
+    latestDagVersionNumber: dagDetails?.latest_dag_version?.version_number,
+    selectedBundleVersion: dagRun.bundle_version,
+    selectedDagVersionNumber: dagRun.dag_versions.at(-1)?.version_number,
+  });
+  const shouldShowBundleVersionOption = shouldShowRunOnLatestOption && 
!onlyNew;
 
   return (
     <Dialog.Root
diff --git 
a/airflow-core/src/airflow/ui/src/components/Clear/TaskInstance/runOnLatestVersion.test.ts
 
b/airflow-core/src/airflow/ui/src/components/Clear/TaskInstance/runOnLatestVersion.test.ts
index 2936e2b9191..1f3d6ba4d3c 100644
--- 
a/airflow-core/src/airflow/ui/src/components/Clear/TaskInstance/runOnLatestVersion.test.ts
+++ 
b/airflow-core/src/airflow/ui/src/components/Clear/TaskInstance/runOnLatestVersion.test.ts
@@ -22,32 +22,41 @@ import { getRunOnLatestVersionState } from 
"./runOnLatestVersion";
 
 describe("getRunOnLatestVersionState", () => {
   it.each([
+    {
+      expectedDagVersionsDiffer: true,
+      expectedShouldShowRunOnLatestOption: false,
+      latestDagVersionNumber: 3,
+      name: "does not show when Dag versions differ but no bundle version is 
present (non-versioned bundle)",
+      selectedDagVersionNumber: 2,
+    },
     {
       expectedDagVersionsDiffer: true,
       expectedShouldShowRunOnLatestOption: true,
+      latestBundleVersion: "bundle-b",
       latestDagVersionNumber: 3,
-      name: "shows and defaults on when DAG version numbers differ",
+      name: "shows when Dag versions differ on a versioned bundle even if the 
run has no recorded bundle version",
+      selectedBundleVersion: null,
       selectedDagVersionNumber: 2,
     },
     {
       expectedDagVersionsDiffer: false,
       expectedShouldShowRunOnLatestOption: false,
       latestDagVersionNumber: 3,
-      name: "does not show when DAG version numbers match and there is no 
bundle difference",
+      name: "does not show when Dag version numbers match and there is no 
bundle difference",
       selectedDagVersionNumber: 3,
     },
     {
       expectedDagVersionsDiffer: false,
       expectedShouldShowRunOnLatestOption: false,
       latestDagVersionNumber: undefined,
-      name: "does not treat a missing latest DAG version number as different",
+      name: "does not treat a missing latest Dag version number as different",
       selectedDagVersionNumber: 3,
     },
     {
       expectedDagVersionsDiffer: false,
       expectedShouldShowRunOnLatestOption: false,
       latestDagVersionNumber: 3,
-      name: "does not treat a missing selected DAG version number as 
different",
+      name: "does not treat a missing selected Dag version number as 
different",
       selectedDagVersionNumber: undefined,
     },
     {
diff --git 
a/airflow-core/src/airflow/ui/src/components/Clear/TaskInstance/runOnLatestVersion.ts
 
b/airflow-core/src/airflow/ui/src/components/Clear/TaskInstance/runOnLatestVersion.ts
index 7bbd2daf904..fa183b37d0c 100644
--- 
a/airflow-core/src/airflow/ui/src/components/Clear/TaskInstance/runOnLatestVersion.ts
+++ 
b/airflow-core/src/airflow/ui/src/components/Clear/TaskInstance/runOnLatestVersion.ts
@@ -55,6 +55,7 @@ export const getRunOnLatestVersionState = ({
 
   return {
     dagVersionsDiffer,
-    shouldShowRunOnLatestOption: dagVersionsDiffer || 
shouldShowForBundleVersion,
+    shouldShowRunOnLatestOption:
+      (dagVersionsDiffer && hasBundleVersion(latestBundleVersion)) || 
shouldShowForBundleVersion,
   };
 };

Reply via email to