This is an automated email from the ASF dual-hosted git repository.
pierrejeambrun pushed a commit to branch v3-1-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/v3-1-test by this push:
new d9aea9b5bb9 [v3-1-test] Fix grid view URL for dynamic task groups
(#63205) (#63254)
d9aea9b5bb9 is described below
commit d9aea9b5bb9b2538e3897b6bf44a9ea231cf01c1
Author: Pierre Jeambrun <[email protected]>
AuthorDate: Tue Mar 10 14:16:38 2026 +0100
[v3-1-test] Fix grid view URL for dynamic task groups (#63205) (#63254)
* fix: Unhandled Exception in remote logging if connection doesn't
exist(#59801) (#62979)
Cherry-picked from 3428dc9 with conflict resolution:
- context.py: Added `import inspect` (skip `import functools` as `from
functools import cache` already exists)
- supervisor.py: Adopted early-return pattern and explicit `del` for GC,
kept simpler env var handling (no `_AIRFLOW_PROCESS_CONTEXT` which doesn't
exist in v3-1-test)
- test_supervisor.py: Replaced `@pytest.mark.xfail` workaround with proper
`use_real_secrets_backends` fixture
Co-authored-by: Claude Opus 4.6 <[email protected]>
* CI: Upgrade important CI environment (#62981)
* chore(deps-dev): bump the core-ui-package-updates group across 1
directory with 3 updates (#62968)
Bumps the core-ui-package-updates group with 1 update in the
/airflow-core/src/airflow/api_fastapi/auth/managers/simple/ui directory:
[@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin).
Updates `@typescript-eslint/eslint-plugin` from 8.50.0 to 8.56.1
- [Release
notes](https://github.com/typescript-eslint/typescript-eslint/releases)
-
[Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
-
[Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.56.1/packages/eslint-plugin)
Updates `@typescript-eslint/parser` from 8.50.0 to 8.56.1
- [Release
notes](https://github.com/typescript-eslint/typescript-eslint/releases)
-
[Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
-
[Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.56.1/packages/parser)
Updates `ts-morph` from 23.0.0 to 27.0.2
- [Release notes](https://github.com/dsherret/ts-morph/releases)
- [Commits](https://github.com/dsherret/ts-morph/compare/23.0.0...27.0.2)
---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
dependency-version: 8.56.1
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: core-ui-package-updates
- dependency-name: "@typescript-eslint/parser"
dependency-version: 8.56.1
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: core-ui-package-updates
- dependency-name: ts-morph
dependency-version: 27.0.2
dependency-type: direct:development
update-type: version-update:semver-major
dependency-group: core-ui-package-updates
...
Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot]
<49699333+dependabot[bot]@users.noreply.github.com>
* [v3-1-test] fix: gracefully handle 404 from worker log server for
historical retry attempts (#62475) (#63000)
* fix: gracefully handle 404 from worker log server for historical retry
attempts
(cherry picked from commit 25e9284a1ded0cf3bdd819591894c50b743d479a)
Co-authored-by: Pradeep Kalluri
<[email protected]>
* [v3-1-test] Remove issue_number option from newsfragment guidance in PR
template (#63006) (#63012)
The CI workflow added in #62975 validates that newsfragment filenames use
the PR number, so allowing issue numbers would cause false CI failures.
Align the PR template with the contributing docs and the new validation.
(cherry picked from commit 41969f4cf7cbff91ebd834f5f1fd7ea53c039915)
Co-authored-by: Xiaodong DENG <[email protected]>
* [v3-1-test] CI: Upgrade important CI environment (#62989) (#63005)
* [v3-1-test] CI: Upgrade important CI environment (#62989)
(cherry picked from commit 60b52b78d74b0eab02e7b7597f947df32adbfd1b)
Co-authored-by: Jarek Potiuk <[email protected]>
* Fix rebase
---------
Co-authored-by: Jarek Potiuk <[email protected]>
* [v3-1-test] Align integration LocalStack docker-compose with e2e
LocalStack config (#62980) (#62993)
(cherry picked from commit 6722c4b3559259591cdc69f76319e1811602956e)
Co-authored-by: Jason(Zhe-You) Liu
<[email protected]>
* [v3-1-test] Fallback to no constraint builds for docker-context-files
installation (#63051) (#63057)
When building PROD from docker-context-files - i.e. when we run main
build with providers built from sources, we should fall back to
no constraints build when there is a conflict with constraints.
This is a follow up after #62378
(cherry picked from commit fef2e62d6b730a31f5050295d9d1193d63e92fe7)
Co-authored-by: Jarek Potiuk <[email protected]>
* Fill Turkish Translation Gap in v3-1-test (#63010)
* Remove global from FastAPI app.py (#59772) (#62997)
* Remove global from FastAPI app.py
* Remove global from FastAPI app.py
Co-authored-by: Jens Scheffler <[email protected]>
* chore(deps): bump actions/setup-java from 4.7.1 to 5.2.0 (#63102)
Bumps [actions/setup-java](https://github.com/actions/setup-java) from
4.7.1 to 5.2.0.
- [Release notes](https://github.com/actions/setup-java/releases)
-
[Commits](https://github.com/actions/setup-java/compare/c5195efecf7bdfc987ee8bae7a71cb8b11521c00...be666c2fcd27ec809703dec50e508c2fdc7f6654)
---
updated-dependencies:
- dependency-name: actions/setup-java
dependency-version: 5.2.0
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot]
<49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): bump actions/stale from 9.1.0 to 10.2.0 (#63099)
Bumps [actions/stale](https://github.com/actions/stale) from 9.1.0 to
10.2.0.
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
-
[Commits](https://github.com/actions/stale/compare/5bef64f19d7facfb25b37b414482c7164d639639...b5d41d4e1d5dceea10e7104786b73624c18a190f)
---
updated-dependencies:
- dependency-name: actions/stale
dependency-version: 10.2.0
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot]
<49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): bump actions/checkout from 4.2.2 to 6.0.2 (#63096)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.2 to
6.0.2.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
-
[Commits](https://github.com/actions/checkout/compare/11bd71901bbe5b1630ceea73d27597364c9af683...de0fac2e4500dabe0009e67214ff5f5447ce83dd)
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: 6.0.2
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot]
<49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): bump actions/setup-python from 5.6.0 to 6.2.0 (#63098)
Bumps [actions/setup-python](https://github.com/actions/setup-python) from
5.6.0 to 6.2.0.
- [Release notes](https://github.com/actions/setup-python/releases)
-
[Commits](https://github.com/actions/setup-python/compare/a26af69be951a213d495a4c3e4e4022e16d87065...a309ff8b426b58ec0e2a45f0f869d46889d02405)
---
updated-dependencies:
- dependency-name: actions/setup-python
dependency-version: 6.2.0
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot]
<49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): bump actions/github-script from 7.0.1 to 8.0.0 (#63090)
Bumps [actions/github-script](https://github.com/actions/github-script)
from 7.0.1 to 8.0.0.
- [Release notes](https://github.com/actions/github-script/releases)
-
[Commits](https://github.com/actions/github-script/compare/60a0d83039c74a4aee543508d2ffcb1c3799cdea...ed597411d8f924073f98dfc5c65a23a2325f34cd)
---
updated-dependencies:
- dependency-name: actions/github-script
dependency-version: 8.0.0
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot]
<49699333+dependabot[bot]@users.noreply.github.com>
* [v3-1-test] Split npm dependabot minor+patch and major version PRs
(#62889) (#63007)
* Ignore major npm dependabot upgrades
* Move major versions to different group
(cherry picked from commit a2e3613cd074017db1241f75f99f27f2d0b955dd)
Co-authored-by: Brent Bovenzi <[email protected]>
* chore(deps): bump the core-ui-package-updates group across 1 directory
with 2 updates (#63069)
Bumps the core-ui-package-updates group with 2 updates in the
/airflow-core/src/airflow/api_fastapi/auth/managers/simple/ui directory:
[@chakra-ui/react](https://github.com/chakra-ui/chakra-ui/tree/HEAD/packages/react)
and [happy-dom](https://github.com/capricorn86/happy-dom).
Updates `@chakra-ui/react` from 3.33.0 to 3.34.0
- [Release notes](https://github.com/chakra-ui/chakra-ui/releases)
-
[Changelog](https://github.com/chakra-ui/chakra-ui/blob/main/packages/react/CHANGELOG.md)
-
[Commits](https://github.com/chakra-ui/chakra-ui/commits/@chakra-ui/[email protected]/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
-
[Commits](https://github.com/capricorn86/happy-dom/compare/v20.7.0...v20.8.3)
---
updated-dependencies:
- dependency-name: "@chakra-ui/react"
dependency-version: 3.34.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: core-ui-package-updates
- dependency-name: happy-dom
dependency-version: 20.8.3
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: core-ui-package-updates
...
Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot]
<49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): bump actions/upload-artifact from 4.6.2 to 7.0.0 (#63128)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact)
from 4.6.2 to 7.0.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
-
[Commits](https://github.com/actions/upload-artifact/compare/ea165f8d65b6e75b540449e92b4886f43607fa02...bbbca2ddaa5d8feaa63e36b76fdaad77386f024f)
---
updated-dependencies:
- dependency-name: actions/upload-artifact
dependency-version: 7.0.0
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot]
<49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): bump actions/setup-go from 5.5.0 to 6.3.0 (#63124)
Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5.5.0 to
6.3.0.
- [Release notes](https://github.com/actions/setup-go/releases)
-
[Commits](https://github.com/actions/setup-go/compare/d35c59abb061a4a6fb18e82ac0862c26744d6ab5...4b73464bb391d4059bd26b0524d20df3927bd417)
---
updated-dependencies:
- dependency-name: actions/setup-go
dependency-version: 6.3.0
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot]
<49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): bump aws-actions/configure-aws-credentials (#63123)
Bumps
[aws-actions/configure-aws-credentials](https://github.com/aws-actions/configure-aws-credentials)
from 4.0.1 to 6.0.0.
- [Release
notes](https://github.com/aws-actions/configure-aws-credentials/releases)
-
[Changelog](https://github.com/aws-actions/configure-aws-credentials/blob/main/CHANGELOG.md)
-
[Commits](https://github.com/aws-actions/configure-aws-credentials/compare/010d0da01d0b5a38af31e9c3470dbfdabdecca3a...8df5847569e6427dd6c4fb1cf565c83acfa8afa7)
---
updated-dependencies:
- dependency-name: aws-actions/configure-aws-credentials
dependency-version: 6.0.0
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot]
<49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): bump actions/setup-node from 4.4.0 to 6.3.0 (#63119)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from
4.4.0 to 6.3.0.
- [Release notes](https://github.com/actions/setup-node/releases)
-
[Commits](https://github.com/actions/setup-node/compare/49933ea5288caeca8642d1e84afbd3f7d6820020...53b83947a5a98c8d113130e565377fae1a50d02f)
---
updated-dependencies:
- dependency-name: actions/setup-node
dependency-version: 6.3.0
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot]
<49699333+dependabot[bot]@users.noreply.github.com>
* [v3-1-test] chore(deps): bump actions/setup-go from 5.5.0 to 6.3.0
(#63133) (#63138)
Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5.5.0 to
6.3.0.
- [Release notes](https://github.com/actions/setup-go/releases)
-
[Commits](https://github.com/actions/setup-go/compare/d35c59abb061a4a6fb18e82ac0862c26744d6ab5...4b73464bb391d4059bd26b0524d20df3927bd417)
(cherry picked from commit 274c2b0e6d3ab570ce780908dd04432704f85f14)
---
updated-dependencies:
- dependency-name: actions/setup-go
dependency-version: 6.3.0
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot]
<49699333+dependabot[bot]@users.noreply.github.com>
* [v3-1-test] chore(deps): bump actions/download-artifact from 4.3.0 to
8.0.0 (#63065) (#63145)
Bumps
[actions/download-artifact](https://github.com/actions/download-artifact) from
4.3.0 to 8.0.0.
- [Release notes](https://github.com/actions/download-artifact/releases)
-
[Commits](https://github.com/actions/download-artifact/compare/d3f86a106a0bac45b974a628896c90dbdf5c8093...70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3)
(cherry picked from commit 2f4646c3ed566e65ee17e644209893677b01a821)
---
updated-dependencies:
- dependency-name: actions/download-artifact
dependency-version: 8.0.0
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot]
<49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): bump the github-actions-updates group with 2 updates (#63157)
Bumps the github-actions-updates group with 2 updates:
[pnpm/action-setup](https://github.com/pnpm/action-setup) and
[slackapi/slack-github-action](https://github.com/slackapi/slack-github-action).
Updates `pnpm/action-setup` from 4.0.0 to 4.2.0
- [Release notes](https://github.com/pnpm/action-setup/releases)
-
[Commits](https://github.com/pnpm/action-setup/compare/fe02b34f77f8bc703788d5817da081398fad5dd2...41ff72655975bd51cab0327fa583b6e92b6d3061)
Updates `slackapi/slack-github-action` from 2.0.0 to 2.1.1
- [Release notes](https://github.com/slackapi/slack-github-action/releases)
-
[Commits](https://github.com/slackapi/slack-github-action/compare/485a9d42d3a73031f12ec201c457e2162c45d02d...91efab103c0de0a537f72a35f6b8cda0ee76bf0a)
---
updated-dependencies:
- dependency-name: pnpm/action-setup
dependency-version: 4.2.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: github-actions-updates
- dependency-name: slackapi/slack-github-action
dependency-version: 2.1.1
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: github-actions-updates
...
Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot]
<49699333+dependabot[bot]@users.noreply.github.com>
* [v3-1-test] perf: use load_only() in get_dag_runs eager loading to reduce
data fetched per task instance (#62482) (#62996)
* perf: use load_only() in eager_load_dag_run_for_validation to reduce data
fetched
The get_dag_runs API endpoint was slow on large deployments because
eager_load_dag_run_for_validation() used selectinload on task_instances and
task_instances_histories without restricting which columns were fetched.
This caused SQLAlchemy to load all heavyweight columns (executor_config with
pickled data, hostname, rendered fields, etc.) for every task instance
across
every DAG run in the result page — even though only dag_version_id is needed
to traverse the association proxy to DagVersion.
Add load_only(TaskInstance.dag_version_id) and
load_only(TaskInstanceHistory.dag_version_id) to the selectinload chains so
the SELECT for task instances fetches only the identity columns and the FK
needed to resolve the dag_version relationship, significantly reducing the
volume of data transferred from the database on busy deployments.
Fixes #62025
* Fix static checks
---------
(cherry picked from commit 13af96b80868ef91ca623d35afcd76003bfbda90)
Co-authored-by: Lakshmi Sravya
<[email protected]>
Co-authored-by: pierrejeambrun <[email protected]>
* perf(api): optimize /ui/dags endpoint serialization (#61483) (#63001)
This PR addresses a significant performance issue in the /ui/dags endpoint
where page load times scaled poorly with the number of DAGs (12-16 seconds
for just 25 DAGs in our testing).
Two optimizations are implemented:
1. Cache URLSafeSerializer for file_token generation
- Previously, a new URLSafeSerializer was instantiated and
conf.get_mandatory_value() was called for every DAG
- Now uses @lru_cache to create the serializer once and reuse it
2. Eliminate redundant Pydantic validation in response construction
- The original pattern used model_validate -> model_dump ->
model_validate
which caused triple serialization overhead per DAG
- Now validates once with DAGResponse.model_validate(), then uses
model_construct() to build DAGWithLatestDagRunsResponse
Together, these changes reduced page load time from 12-16 seconds to
~130ms in our dev environment.
(cherry picked from commit a915216434cf583b0b54eee129cc9a93b96492b2)
Co-authored-by: john-rodriguez-mgni
<[email protected]>
Co-authored-by: Cursor <[email protected]>
* [v3-1-test] Bump astroid>=4 (#63170) (#63174)
(cherry picked from commit 0a985eabb8e108795d49333b4544847657d36c1a)
Co-authored-by: Elad Kalif <[email protected]>
* chore(deps): bump the core-ui-package-updates group across 1 directory
with 2 updates (#63153)
Bumps the core-ui-package-updates group with 1 update in the
/airflow-core/src/airflow/api_fastapi/auth/managers/simple/ui directory:
[@chakra-ui/react](https://github.com/chakra-ui/chakra-ui/tree/HEAD/packages/react).
Updates `@chakra-ui/react` from 3.33.0 to 3.34.0
- [Release notes](https://github.com/chakra-ui/chakra-ui/releases)
-
[Changelog](https://github.com/chakra-ui/chakra-ui/blob/main/packages/react/CHANGELOG.md)
-
[Commits](https://github.com/chakra-ui/chakra-ui/commits/@chakra-ui/[email protected]/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
-
[Commits](https://github.com/capricorn86/happy-dom/compare/v20.7.0...v20.8.3)
---
updated-dependencies:
- dependency-name: "@chakra-ui/react"
dependency-version: 3.34.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: core-ui-package-updates
- dependency-name: happy-dom
dependency-version: 20.8.3
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: core-ui-package-updates
...
Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot]
<49699333+dependabot[bot]@users.noreply.github.com>
* [v3-1-test] Further limit setuptools after 82.0.1 is released (until
redoc fixes it) (#63202) (#63203)
(cherry picked from commit b528e502eff321ec07464fc9c0e05ede30c8d5aa)
Co-authored-by: Jarek Potiuk <[email protected]>
* Fix race condition in auth manager initialization (#62431) (#62995)
FAB FastAPI routes call get_application_builder() on every request,
which creates a new Flask app and invokes init_app(). Concurrent calls
race on the singleton auth_manager's appbuilder and security_manager,
causing KeyError: 'AUTH_USER_REGISTRATION' and AttributeError.
Add _init_app_lock around the critical section in init_app() that
mutates the singleton auth_manager state and registers views, so
concurrent get_application_builder() calls are serialized.
Co-authored-by: Young-Ki Kim <[email protected]>
* chore(deps): bump github/codeql-action (#63223)
Bumps the github-actions-updates group with 1 update:
[github/codeql-action](https://github.com/github/codeql-action).
Updates `github/codeql-action` from 3.29.0 to 4.32.6
- [Release notes](https://github.com/github/codeql-action/releases)
-
[Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
-
[Commits](https://github.com/github/codeql-action/compare/ce28f5bb42b7a9f2c824e633a3f6ee835bab6858...0d579ffd059c29b07949a3cce3983f0780820c98)
---
updated-dependencies:
- dependency-name: github/codeql-action
dependency-version: 4.32.6
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: github-actions-updates
...
Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot]
<49699333+dependabot[bot]@users.noreply.github.com>
* [v3-1-test] Clarify docs on max_active_tasks parameter on a Dag (#63217)
(#63228)
(cherry picked from commit 9ae1875a19a84d8f55948dd85c872ee89ce86036)
Co-authored-by: Jens Scheffler <[email protected]>
* [v3-1-test] Fix undefined variable in install_from_external_spec error
message (#63233) (#63237)
The error message in install_from_external_spec() referenced
${INSTALLATION_METHOD} which does not exist — the correct variable
is ${AIRFLOW_INSTALLATION_METHOD}. With set -u active, hitting this
error path would crash with an "unbound variable" error instead of
printing the intended user-friendly message.
The typo was introduced in a1717a652b and carried forward into the
inlined copies in both Dockerfiles.
(cherry picked from commit 2ab6f9490dfbc205d1176d3d5dc1204d206f5397)
Co-authored-by: Xiaodong DENG <[email protected]>
* Fix grid view URL for dynamic task groups (#63205)
Dynamic task groups with isMapped=true were getting /mapped appended
to their URL in the grid view, producing URLs like
/tasks/group/{groupId}/mapped which has no matching route (404).
The graph view correctly handles this by not appending /mapped for groups.
This fix adds the same guard to buildTaskInstanceUrl.
closes: #63197
(cherry picked from commit 7bc23ef3b564b0b6d1069411b38aee01473266fe)
---------
Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: Dev-iL <[email protected]>
Co-authored-by: Claude Opus 4.6 <[email protected]>
Co-authored-by: Wei Lee <[email protected]>
Co-authored-by: dependabot[bot]
<49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Pradeep Kalluri
<[email protected]>
Co-authored-by: Xiaodong DENG <[email protected]>
Co-authored-by: Bugra Ozturk <[email protected]>
Co-authored-by: Jarek Potiuk <[email protected]>
Co-authored-by: Jason(Zhe-You) Liu
<[email protected]>
Co-authored-by: Vincent <[email protected]>
Co-authored-by: Jens Scheffler <[email protected]>
Co-authored-by: Brent Bovenzi <[email protected]>
Co-authored-by: Lakshmi Sravya
<[email protected]>
Co-authored-by: john-rodriguez-mgni
<[email protected]>
Co-authored-by: Cursor <[email protected]>
Co-authored-by: Elad Kalif <[email protected]>
Co-authored-by: Young-Ki Kim <[email protected]>
Co-authored-by: Subham <[email protected]>
---
airflow-core/newsfragments/63205.bugfix.rst | 1 +
airflow-core/src/airflow/ui/src/utils/links.test.ts | 19 +++++++++++++++++--
airflow-core/src/airflow/ui/src/utils/links.ts | 2 +-
3 files changed, 19 insertions(+), 3 deletions(-)
diff --git a/airflow-core/newsfragments/63205.bugfix.rst
b/airflow-core/newsfragments/63205.bugfix.rst
new file mode 100644
index 00000000000..7e1781bc8ed
--- /dev/null
+++ b/airflow-core/newsfragments/63205.bugfix.rst
@@ -0,0 +1 @@
+Fix grid view URL for dynamic task groups producing 404 by not appending
``/mapped`` to group URLs.
diff --git a/airflow-core/src/airflow/ui/src/utils/links.test.ts
b/airflow-core/src/airflow/ui/src/utils/links.test.ts
index 47dd032ebc5..75d175e22a5 100644
--- a/airflow-core/src/airflow/ui/src/utils/links.test.ts
+++ b/airflow-core/src/airflow/ui/src/utils/links.test.ts
@@ -243,7 +243,7 @@ describe("buildTaskInstanceUrl", () => {
}),
).toBe("/dags/new_dag/runs/new_run/tasks/group/new_group");
- // Groups should never preserve tabs even for mapped groups
+ // Groups should never get /mapped appended — no such route exists for
task groups
expect(
buildTaskInstanceUrl({
currentPathname: "/dags/old/runs/old/tasks/group/old_group/events",
@@ -254,6 +254,21 @@ describe("buildTaskInstanceUrl", () => {
runId: "new_run",
taskId: "new_group",
}),
- ).toBe("/dags/new_dag/runs/new_run/tasks/group/new_group/mapped/3");
+ ).toBe("/dags/new_dag/runs/new_run/tasks/group/new_group");
+ });
+
+ it("should not append /mapped for dynamic task groups from grid view", () =>
{
+ // Regression test for https://github.com/apache/airflow/issues/63197
+ // Dynamic task groups have isMapped=true but no route exists for
group/:groupId/mapped
+ expect(
+ buildTaskInstanceUrl({
+ currentPathname: "/dags/my_dag/runs/run_1/tasks/group/my_group",
+ dagId: "my_dag",
+ isGroup: true,
+ isMapped: true,
+ runId: "run_1",
+ taskId: "my_group",
+ }),
+ ).toBe("/dags/my_dag/runs/run_1/tasks/group/my_group");
});
});
diff --git a/airflow-core/src/airflow/ui/src/utils/links.ts
b/airflow-core/src/airflow/ui/src/utils/links.ts
index 3beafb06afe..23c438721a5 100644
--- a/airflow-core/src/airflow/ui/src/utils/links.ts
+++ b/airflow-core/src/airflow/ui/src/utils/links.ts
@@ -89,7 +89,7 @@ export const buildTaskInstanceUrl = (params: {
let basePath = `/dags/${dagId}/runs/${runId}/tasks/${groupPath}${taskId}`;
- if (isMapped) {
+ if (isMapped && !isGroup) {
basePath += `/mapped`;
if (mapIndex !== undefined && mapIndex !== "-1") {
basePath += `/${mapIndex}`;