Skip to content

Fix flaky test_reading_from_pipes on Python 3.13 with pytest-xdist - #59801

Merged
jscheffl merged 1 commit into
apache:mainfrom
Dev-iL:2512/fix_flaky_pipes
Dec 25, 2025
Merged

Fix flaky test_reading_from_pipes on Python 3.13 with pytest-xdist#59801
jscheffl merged 1 commit into
apache:mainfrom
Dev-iL:2512/fix_flaky_pipes

Conversation

@Dev-iL

@Dev-iLDev-iL commented Dec 25, 2025

Copy link
Copy Markdown
Collaborator

Summary

This PR fixes the flaky test_reading_from_pipes test on Python 3.13 with pytest-xdist through two complementary fixes.

Fix 1: Defensive improvements

These changes address the symptom pathway where inherited mocks in forked processes could trigger warnings:

  1. context.py: Changed hasattr() to getattr() to avoid triggering coroutine creation when checking for async methods on AsyncMock objects
  2. test_supervisor.py: Added use_real_secrets_backends fixture to ensure real backend instances are used in subprocess tests, preventing inheritance of mocked backends across fork boundaries
  3. supervisor.py: Fixed resource cleanup in _remote_logging_conn() with explicit del statements to prevent leaking client references
  4. client.py: Fixed lru_cache binding by calling via type(self) instead of self to avoid carrying stale cache state across forked processes

Fix 2: Root cause fix

The actual source of the unawaited coroutine was in test_runtime_error_triggers_greenback_fallback in test_secrets.py:

  1. The test mocked greenback.await_ to return a value directly without actually awaiting anything
  2. When backend.get_connection() executed greenback.await_(self.aget_connection(conn_id)), a real coroutine was created
  3. The mocked greenback.await_ returned immediately without awaiting that coroutine
  4. When the orphaned coroutine was garbage collected, Python 3.13 raised RuntimeWarning: coroutine 'ExecutionAPISecretsBackend.aget_connection' was never awaited
  5. When tests ran in parallel with pytest-xdist, this warning appeared in captured_logs of other tests, causing assertion failures

The fix: Modified the test to mock greenback.await_ with a side_effect that actually awaits the coroutine, and mock aget_connection to return the expected connection directly.

Both fixes together make the codebase more robust against async-related test flakiness on Python 3.13.


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@jscheffljscheffl added the all versions If set, the CI build will be forced to use all versions of Python/K8S/DBs label Dec 25, 2025
@jscheffl

Copy link
Copy Markdown
Contributor

Close and re-open to force a new CI run...

@jscheffljscheffl reopened this Dec 25, 2025
@Dev-iL
Dev-iLforce-pushed the 2512/fix_flaky_pipes branch from f09dd76 to 053f3bdCompareDecember 25, 2025 09:59
@jscheffl
jscheffl self-requested a review December 25, 2025 10:14
@potiuk

Copy link
Copy Markdown
Member

Hmm. Mypy failed

@Dev-iL
Dev-iLforce-pushed the 2512/fix_flaky_pipes branch from 053f3bd to 321fbb8CompareDecember 25, 2025 11:08
@Dev-iL

Dev-iL commented Dec 25, 2025

Copy link
Copy Markdown
CollaboratorAuthor

I did some more local testing, There was another flaky test in there. Let's hope it's fine now.

Please note that the AI introduced additional changes since your approval.

The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
@Dev-iL
Dev-iLforce-pushed the 2512/fix_flaky_pipes branch from 321fbb8 to 763d21bCompareDecember 25, 2025 11:50
@jscheffl
jscheffl merged commit 3428dc9 into apache:mainDec 25, 2025
154 checks passed
amoghrajesh pushed a commit to astronomer/airflow that referenced this pull request Dec 29, 2025
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Jan 2, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
stegololz pushed a commit to stegololz/airflow that referenced this pull request Jan 9, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
jhgoebbert pushed a commit to jhgoebbert/airflow_Owen-CH-Leung that referenced this pull request Feb 8, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Mar 4, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
@github-actions

Copy link
Copy Markdown
Contributor

Backport failed to create: v3-1-test. View the failure log Run details

Note: As of Merging PRs targeted for Airflow 3.X
the committer who merges the PR is responsible for backporting the PRs that are bug fixes (generally speaking) to the maintenance branches.

In matter of doubt please ask in #release-management Slack channel.

StatusBranchResult
v3-1-testCommit Link

You can attempt to backport this manually by running:

cherry_picker 3428dc9 v3-1-test

This should apply the commit to the v3-1-test branch and leave the commit in conflict state marking
the files that need manual conflict resolution.

After you have resolved the conflicts, you can continue the backport process by running:

cherry_picker --continue

If you don't have cherry-picker installed, see the installation guide.

@eladkaleladkal added this to the Airflow 3.1.9 milestone Mar 6, 2026
Dev-iL added a commit to Dev-iL/airflow that referenced this pull request Mar 6, 2026
…pache#59801)
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 <noreply@anthropic.com>
eladkal pushed a commit that referenced this pull request Mar 6, 2026
…#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 <noreply@anthropic.com>
vatsrahul1001 pushed a commit that referenced this pull request Mar 10, 2026
…#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 <noreply@anthropic.com>
pierrejeambrun added a commit that referenced this pull request Mar 10, 2026
* 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 <noreply@anthropic.com>
* 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](dsherret/ts-morph@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] <support@github.com>
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 25e9284)
Co-authored-by: Pradeep Kalluri <128097794+kalluripradeep@users.noreply.github.com>
* [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 41969f4)
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* [v3-1-test] CI: Upgrade important CI environment (#62989) (#63005)
* [v3-1-test] CI: Upgrade important CI environment (#62989)
(cherry picked from commit 60b52b7)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* Fix rebase
---------
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* [v3-1-test] Align integration LocalStack docker-compose with e2e LocalStack config (#62980) (#62993)
(cherry picked from commit 6722c4b)
Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
* [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 fef2e62)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* 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 <95105677+jscheffl@users.noreply.github.com>
* 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](actions/setup-java@c5195ef...be666c2)
---
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] <support@github.com>
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](actions/stale@5bef64f...b5d41d4)
---
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] <support@github.com>
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](actions/checkout@11bd719...de0fac2)
---
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] <support@github.com>
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](actions/setup-python@a26af69...a309ff8)
---
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] <support@github.com>
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](actions/github-script@60a0d83...ed59741)
---
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] <support@github.com>
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 a2e3613)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
* 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/react@3.34.0/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@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] <support@github.com>
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](actions/upload-artifact@ea165f8...bbbca2d)
---
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] <support@github.com>
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](actions/setup-go@d35c59a...4b73464)
---
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] <support@github.com>
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](aws-actions/configure-aws-credentials@010d0da...8df5847)
---
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] <support@github.com>
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](actions/setup-node@49933ea...53b8394)
---
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] <support@github.com>
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](actions/setup-go@d35c59a...4b73464)
(cherry picked from commit 274c2b0)
---
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] <support@github.com>
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](actions/download-artifact@d3f86a1...70fc10c)
(cherry picked from commit 2f4646c)
---
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] <support@github.com>
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](pnpm/action-setup@fe02b34...41ff726)
Updates `slackapi/slack-github-action` from 2.0.0 to 2.1.1
- [Release notes](https://github.com/slackapi/slack-github-action/releases)
- [Commits](slackapi/slack-github-action@485a9d4...91efab1)
---
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] <support@github.com>
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 13af96b)
Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: pierrejeambrun <pierrejbrun@gmail.com>
* 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 a915216)
Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* [v3-1-test] Bump astroid>=4 (#63170) (#63174)
(cherry picked from commit 0a985ea)
Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
* 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/react@3.34.0/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@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] <support@github.com>
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 b528e50)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* 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 <kimyoungi99@naver.com>
* 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](github/codeql-action@ce28f5b...0d579ff)
---
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] <support@github.com>
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 9ae1875)
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
* [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 a1717a6 and carried forward into the
inlined copies in both Dockerfiles.
(cherry picked from commit 2ab6f94)
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* 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 7bc23ef)
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Dev-iL <6509619+Dev-iL@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Wei Lee <weilee.rx@gmail.com>
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 <128097794+kalluripradeep@users.noreply.github.com>
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
Co-authored-by: Bugra Ozturk <bugraoz93@users.noreply.github.com>
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
Co-authored-by: Vincent <97131062+vincbeck@users.noreply.github.com>
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
Co-authored-by: Young-Ki Kim <kimyoungi99@naver.com>
Co-authored-by: Subham <subhamsangwan26@gmail.com>
Ankurdeewan pushed a commit to Ankurdeewan/airflow that referenced this pull request Mar 15, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
vatsrahul1001 pushed a commit that referenced this pull request Mar 25, 2026
…#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 <noreply@anthropic.com>
vatsrahul1001 pushed a commit that referenced this pull request Mar 25, 2026
* 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 <noreply@anthropic.com>
* 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](dsherret/ts-morph@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] <support@github.com>
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 25e9284)
Co-authored-by: Pradeep Kalluri <128097794+kalluripradeep@users.noreply.github.com>
* [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 41969f4)
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* [v3-1-test] CI: Upgrade important CI environment (#62989) (#63005)
* [v3-1-test] CI: Upgrade important CI environment (#62989)
(cherry picked from commit 60b52b7)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* Fix rebase
---------
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* [v3-1-test] Align integration LocalStack docker-compose with e2e LocalStack config (#62980) (#62993)
(cherry picked from commit 6722c4b)
Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
* [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 fef2e62)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* 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 <95105677+jscheffl@users.noreply.github.com>
* 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](actions/setup-java@c5195ef...be666c2)
---
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] <support@github.com>
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](actions/stale@5bef64f...b5d41d4)
---
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] <support@github.com>
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](actions/checkout@11bd719...de0fac2)
---
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] <support@github.com>
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](actions/setup-python@a26af69...a309ff8)
---
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] <support@github.com>
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](actions/github-script@60a0d83...ed59741)
---
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] <support@github.com>
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 a2e3613)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
* 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/react@3.34.0/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@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] <support@github.com>
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](actions/upload-artifact@ea165f8...bbbca2d)
---
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] <support@github.com>
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](actions/setup-go@d35c59a...4b73464)
---
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] <support@github.com>
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](aws-actions/configure-aws-credentials@010d0da...8df5847)
---
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] <support@github.com>
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](actions/setup-node@49933ea...53b8394)
---
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] <support@github.com>
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](actions/setup-go@d35c59a...4b73464)
(cherry picked from commit 274c2b0)
---
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] <support@github.com>
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](actions/download-artifact@d3f86a1...70fc10c)
(cherry picked from commit 2f4646c)
---
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] <support@github.com>
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](pnpm/action-setup@fe02b34...41ff726)
Updates `slackapi/slack-github-action` from 2.0.0 to 2.1.1
- [Release notes](https://github.com/slackapi/slack-github-action/releases)
- [Commits](slackapi/slack-github-action@485a9d4...91efab1)
---
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] <support@github.com>
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 13af96b)
Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: pierrejeambrun <pierrejbrun@gmail.com>
* 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 a915216)
Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* [v3-1-test] Bump astroid>=4 (#63170) (#63174)
(cherry picked from commit 0a985ea)
Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
* 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/react@3.34.0/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@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] <support@github.com>
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 b528e50)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* 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 <kimyoungi99@naver.com>
* 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](github/codeql-action@ce28f5b...0d579ff)
---
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] <support@github.com>
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 9ae1875)
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
* [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 a1717a6 and carried forward into the
inlined copies in both Dockerfiles.
(cherry picked from commit 2ab6f94)
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* 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 7bc23ef)
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Dev-iL <6509619+Dev-iL@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Wei Lee <weilee.rx@gmail.com>
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 <128097794+kalluripradeep@users.noreply.github.com>
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
Co-authored-by: Bugra Ozturk <bugraoz93@users.noreply.github.com>
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
Co-authored-by: Vincent <97131062+vincbeck@users.noreply.github.com>
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
Co-authored-by: Young-Ki Kim <kimyoungi99@naver.com>
Co-authored-by: Subham <subhamsangwan26@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

all versionsIf set, the CI build will be forced to use all versions of Python/K8S/DBsarea:task-sdk

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Dev-iL@jscheffl@potiuk@eladkal
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Fix flaky test_reading_from_pipes on Python 3.13 with pytest-xdist by Dev-iL · Pull Request #59801 · apache/airflow · GitHub
Skip to content

Fix flaky test_reading_from_pipes on Python 3.13 with pytest-xdist - #59801

Merged
jscheffl merged 1 commit into
apache:mainfrom
Dev-iL:2512/fix_flaky_pipes
Dec 25, 2025
Merged

Fix flaky test_reading_from_pipes on Python 3.13 with pytest-xdist#59801
jscheffl merged 1 commit into
apache:mainfrom
Dev-iL:2512/fix_flaky_pipes

Conversation

@Dev-iL

@Dev-iLDev-iL commented Dec 25, 2025

Copy link
Copy Markdown
Collaborator

Summary

This PR fixes the flaky test_reading_from_pipes test on Python 3.13 with pytest-xdist through two complementary fixes.

Fix 1: Defensive improvements

These changes address the symptom pathway where inherited mocks in forked processes could trigger warnings:

  1. context.py: Changed hasattr() to getattr() to avoid triggering coroutine creation when checking for async methods on AsyncMock objects
  2. test_supervisor.py: Added use_real_secrets_backends fixture to ensure real backend instances are used in subprocess tests, preventing inheritance of mocked backends across fork boundaries
  3. supervisor.py: Fixed resource cleanup in _remote_logging_conn() with explicit del statements to prevent leaking client references
  4. client.py: Fixed lru_cache binding by calling via type(self) instead of self to avoid carrying stale cache state across forked processes

Fix 2: Root cause fix

The actual source of the unawaited coroutine was in test_runtime_error_triggers_greenback_fallback in test_secrets.py:

  1. The test mocked greenback.await_ to return a value directly without actually awaiting anything
  2. When backend.get_connection() executed greenback.await_(self.aget_connection(conn_id)), a real coroutine was created
  3. The mocked greenback.await_ returned immediately without awaiting that coroutine
  4. When the orphaned coroutine was garbage collected, Python 3.13 raised RuntimeWarning: coroutine 'ExecutionAPISecretsBackend.aget_connection' was never awaited
  5. When tests ran in parallel with pytest-xdist, this warning appeared in captured_logs of other tests, causing assertion failures

The fix: Modified the test to mock greenback.await_ with a side_effect that actually awaits the coroutine, and mock aget_connection to return the expected connection directly.

Both fixes together make the codebase more robust against async-related test flakiness on Python 3.13.


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@jscheffljscheffl added the all versions If set, the CI build will be forced to use all versions of Python/K8S/DBs label Dec 25, 2025
@jscheffl

Copy link
Copy Markdown
Contributor

Close and re-open to force a new CI run...

@jscheffljscheffl reopened this Dec 25, 2025
@Dev-iL
Dev-iLforce-pushed the 2512/fix_flaky_pipes branch from f09dd76 to 053f3bdCompareDecember 25, 2025 09:59
@jscheffl
jscheffl self-requested a review December 25, 2025 10:14
@potiuk

Copy link
Copy Markdown
Member

Hmm. Mypy failed

@Dev-iL
Dev-iLforce-pushed the 2512/fix_flaky_pipes branch from 053f3bd to 321fbb8CompareDecember 25, 2025 11:08
@Dev-iL

Dev-iL commented Dec 25, 2025

Copy link
Copy Markdown
CollaboratorAuthor

I did some more local testing, There was another flaky test in there. Let's hope it's fine now.

Please note that the AI introduced additional changes since your approval.

The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
@Dev-iL
Dev-iLforce-pushed the 2512/fix_flaky_pipes branch from 321fbb8 to 763d21bCompareDecember 25, 2025 11:50
@jscheffl
jscheffl merged commit 3428dc9 into apache:mainDec 25, 2025
154 checks passed
amoghrajesh pushed a commit to astronomer/airflow that referenced this pull request Dec 29, 2025
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Jan 2, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
stegololz pushed a commit to stegololz/airflow that referenced this pull request Jan 9, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
jhgoebbert pushed a commit to jhgoebbert/airflow_Owen-CH-Leung that referenced this pull request Feb 8, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Mar 4, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
@github-actions

Copy link
Copy Markdown
Contributor

Backport failed to create: v3-1-test. View the failure log Run details

Note: As of Merging PRs targeted for Airflow 3.X
the committer who merges the PR is responsible for backporting the PRs that are bug fixes (generally speaking) to the maintenance branches.

In matter of doubt please ask in #release-management Slack channel.

StatusBranchResult
v3-1-testCommit Link

You can attempt to backport this manually by running:

cherry_picker 3428dc9 v3-1-test

This should apply the commit to the v3-1-test branch and leave the commit in conflict state marking
the files that need manual conflict resolution.

After you have resolved the conflicts, you can continue the backport process by running:

cherry_picker --continue

If you don't have cherry-picker installed, see the installation guide.

@eladkaleladkal added this to the Airflow 3.1.9 milestone Mar 6, 2026
Dev-iL added a commit to Dev-iL/airflow that referenced this pull request Mar 6, 2026
…pache#59801)
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 <noreply@anthropic.com>
eladkal pushed a commit that referenced this pull request Mar 6, 2026
…#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 <noreply@anthropic.com>
vatsrahul1001 pushed a commit that referenced this pull request Mar 10, 2026
…#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 <noreply@anthropic.com>
pierrejeambrun added a commit that referenced this pull request Mar 10, 2026
* 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 <noreply@anthropic.com>
* 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](dsherret/ts-morph@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] <support@github.com>
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 25e9284)
Co-authored-by: Pradeep Kalluri <128097794+kalluripradeep@users.noreply.github.com>
* [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 41969f4)
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* [v3-1-test] CI: Upgrade important CI environment (#62989) (#63005)
* [v3-1-test] CI: Upgrade important CI environment (#62989)
(cherry picked from commit 60b52b7)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* Fix rebase
---------
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* [v3-1-test] Align integration LocalStack docker-compose with e2e LocalStack config (#62980) (#62993)
(cherry picked from commit 6722c4b)
Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
* [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 fef2e62)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* 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 <95105677+jscheffl@users.noreply.github.com>
* 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](actions/setup-java@c5195ef...be666c2)
---
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] <support@github.com>
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](actions/stale@5bef64f...b5d41d4)
---
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] <support@github.com>
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](actions/checkout@11bd719...de0fac2)
---
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] <support@github.com>
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](actions/setup-python@a26af69...a309ff8)
---
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] <support@github.com>
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](actions/github-script@60a0d83...ed59741)
---
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] <support@github.com>
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 a2e3613)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
* 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/react@3.34.0/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@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] <support@github.com>
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](actions/upload-artifact@ea165f8...bbbca2d)
---
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] <support@github.com>
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](actions/setup-go@d35c59a...4b73464)
---
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] <support@github.com>
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](aws-actions/configure-aws-credentials@010d0da...8df5847)
---
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] <support@github.com>
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](actions/setup-node@49933ea...53b8394)
---
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] <support@github.com>
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](actions/setup-go@d35c59a...4b73464)
(cherry picked from commit 274c2b0)
---
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] <support@github.com>
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](actions/download-artifact@d3f86a1...70fc10c)
(cherry picked from commit 2f4646c)
---
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] <support@github.com>
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](pnpm/action-setup@fe02b34...41ff726)
Updates `slackapi/slack-github-action` from 2.0.0 to 2.1.1
- [Release notes](https://github.com/slackapi/slack-github-action/releases)
- [Commits](slackapi/slack-github-action@485a9d4...91efab1)
---
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] <support@github.com>
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 13af96b)
Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: pierrejeambrun <pierrejbrun@gmail.com>
* 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 a915216)
Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* [v3-1-test] Bump astroid>=4 (#63170) (#63174)
(cherry picked from commit 0a985ea)
Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
* 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/react@3.34.0/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@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] <support@github.com>
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 b528e50)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* 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 <kimyoungi99@naver.com>
* 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](github/codeql-action@ce28f5b...0d579ff)
---
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] <support@github.com>
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 9ae1875)
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
* [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 a1717a6 and carried forward into the
inlined copies in both Dockerfiles.
(cherry picked from commit 2ab6f94)
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* 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 7bc23ef)
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Dev-iL <6509619+Dev-iL@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Wei Lee <weilee.rx@gmail.com>
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 <128097794+kalluripradeep@users.noreply.github.com>
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
Co-authored-by: Bugra Ozturk <bugraoz93@users.noreply.github.com>
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
Co-authored-by: Vincent <97131062+vincbeck@users.noreply.github.com>
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
Co-authored-by: Young-Ki Kim <kimyoungi99@naver.com>
Co-authored-by: Subham <subhamsangwan26@gmail.com>
Ankurdeewan pushed a commit to Ankurdeewan/airflow that referenced this pull request Mar 15, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
vatsrahul1001 pushed a commit that referenced this pull request Mar 25, 2026
…#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 <noreply@anthropic.com>
vatsrahul1001 pushed a commit that referenced this pull request Mar 25, 2026
* 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 <noreply@anthropic.com>
* 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](dsherret/ts-morph@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] <support@github.com>
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 25e9284)
Co-authored-by: Pradeep Kalluri <128097794+kalluripradeep@users.noreply.github.com>
* [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 41969f4)
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* [v3-1-test] CI: Upgrade important CI environment (#62989) (#63005)
* [v3-1-test] CI: Upgrade important CI environment (#62989)
(cherry picked from commit 60b52b7)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* Fix rebase
---------
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* [v3-1-test] Align integration LocalStack docker-compose with e2e LocalStack config (#62980) (#62993)
(cherry picked from commit 6722c4b)
Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
* [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 fef2e62)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* 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 <95105677+jscheffl@users.noreply.github.com>
* 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](actions/setup-java@c5195ef...be666c2)
---
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] <support@github.com>
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](actions/stale@5bef64f...b5d41d4)
---
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] <support@github.com>
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](actions/checkout@11bd719...de0fac2)
---
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] <support@github.com>
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](actions/setup-python@a26af69...a309ff8)
---
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] <support@github.com>
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](actions/github-script@60a0d83...ed59741)
---
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] <support@github.com>
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 a2e3613)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
* 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/react@3.34.0/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@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] <support@github.com>
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](actions/upload-artifact@ea165f8...bbbca2d)
---
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] <support@github.com>
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](actions/setup-go@d35c59a...4b73464)
---
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] <support@github.com>
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](aws-actions/configure-aws-credentials@010d0da...8df5847)
---
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] <support@github.com>
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](actions/setup-node@49933ea...53b8394)
---
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] <support@github.com>
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](actions/setup-go@d35c59a...4b73464)
(cherry picked from commit 274c2b0)
---
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] <support@github.com>
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](actions/download-artifact@d3f86a1...70fc10c)
(cherry picked from commit 2f4646c)
---
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] <support@github.com>
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](pnpm/action-setup@fe02b34...41ff726)
Updates `slackapi/slack-github-action` from 2.0.0 to 2.1.1
- [Release notes](https://github.com/slackapi/slack-github-action/releases)
- [Commits](slackapi/slack-github-action@485a9d4...91efab1)
---
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] <support@github.com>
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 13af96b)
Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: pierrejeambrun <pierrejbrun@gmail.com>
* 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 a915216)
Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* [v3-1-test] Bump astroid>=4 (#63170) (#63174)
(cherry picked from commit 0a985ea)
Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
* 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/react@3.34.0/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@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] <support@github.com>
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 b528e50)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* 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 <kimyoungi99@naver.com>
* 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](github/codeql-action@ce28f5b...0d579ff)
---
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] <support@github.com>
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 9ae1875)
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
* [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 a1717a6 and carried forward into the
inlined copies in both Dockerfiles.
(cherry picked from commit 2ab6f94)
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* 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 7bc23ef)
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Dev-iL <6509619+Dev-iL@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Wei Lee <weilee.rx@gmail.com>
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 <128097794+kalluripradeep@users.noreply.github.com>
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
Co-authored-by: Bugra Ozturk <bugraoz93@users.noreply.github.com>
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
Co-authored-by: Vincent <97131062+vincbeck@users.noreply.github.com>
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
Co-authored-by: Young-Ki Kim <kimyoungi99@naver.com>
Co-authored-by: Subham <subhamsangwan26@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

all versionsIf set, the CI build will be forced to use all versions of Python/K8S/DBsarea:task-sdk

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Dev-iL@jscheffl@potiuk@eladkal
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Fix flaky test_reading_from_pipes on Python 3.13 with pytest-xdist by Dev-iL · Pull Request #59801 · apache/airflow · GitHub
Skip to content

Fix flaky test_reading_from_pipes on Python 3.13 with pytest-xdist - #59801

Merged
jscheffl merged 1 commit into
apache:mainfrom
Dev-iL:2512/fix_flaky_pipes
Dec 25, 2025
Merged

Fix flaky test_reading_from_pipes on Python 3.13 with pytest-xdist#59801
jscheffl merged 1 commit into
apache:mainfrom
Dev-iL:2512/fix_flaky_pipes

Conversation

@Dev-iL

@Dev-iLDev-iL commented Dec 25, 2025

Copy link
Copy Markdown
Collaborator

Summary

This PR fixes the flaky test_reading_from_pipes test on Python 3.13 with pytest-xdist through two complementary fixes.

Fix 1: Defensive improvements

These changes address the symptom pathway where inherited mocks in forked processes could trigger warnings:

  1. context.py: Changed hasattr() to getattr() to avoid triggering coroutine creation when checking for async methods on AsyncMock objects
  2. test_supervisor.py: Added use_real_secrets_backends fixture to ensure real backend instances are used in subprocess tests, preventing inheritance of mocked backends across fork boundaries
  3. supervisor.py: Fixed resource cleanup in _remote_logging_conn() with explicit del statements to prevent leaking client references
  4. client.py: Fixed lru_cache binding by calling via type(self) instead of self to avoid carrying stale cache state across forked processes

Fix 2: Root cause fix

The actual source of the unawaited coroutine was in test_runtime_error_triggers_greenback_fallback in test_secrets.py:

  1. The test mocked greenback.await_ to return a value directly without actually awaiting anything
  2. When backend.get_connection() executed greenback.await_(self.aget_connection(conn_id)), a real coroutine was created
  3. The mocked greenback.await_ returned immediately without awaiting that coroutine
  4. When the orphaned coroutine was garbage collected, Python 3.13 raised RuntimeWarning: coroutine 'ExecutionAPISecretsBackend.aget_connection' was never awaited
  5. When tests ran in parallel with pytest-xdist, this warning appeared in captured_logs of other tests, causing assertion failures

The fix: Modified the test to mock greenback.await_ with a side_effect that actually awaits the coroutine, and mock aget_connection to return the expected connection directly.

Both fixes together make the codebase more robust against async-related test flakiness on Python 3.13.


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@jscheffljscheffl added the all versions If set, the CI build will be forced to use all versions of Python/K8S/DBs label Dec 25, 2025
@jscheffl

Copy link
Copy Markdown
Contributor

Close and re-open to force a new CI run...

@jscheffljscheffl reopened this Dec 25, 2025
@Dev-iL
Dev-iLforce-pushed the 2512/fix_flaky_pipes branch from f09dd76 to 053f3bdCompareDecember 25, 2025 09:59
@jscheffl
jscheffl self-requested a review December 25, 2025 10:14
@potiuk

Copy link
Copy Markdown
Member

Hmm. Mypy failed

@Dev-iL
Dev-iLforce-pushed the 2512/fix_flaky_pipes branch from 053f3bd to 321fbb8CompareDecember 25, 2025 11:08
@Dev-iL

Dev-iL commented Dec 25, 2025

Copy link
Copy Markdown
CollaboratorAuthor

I did some more local testing, There was another flaky test in there. Let's hope it's fine now.

Please note that the AI introduced additional changes since your approval.

The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
@Dev-iL
Dev-iLforce-pushed the 2512/fix_flaky_pipes branch from 321fbb8 to 763d21bCompareDecember 25, 2025 11:50
@jscheffl
jscheffl merged commit 3428dc9 into apache:mainDec 25, 2025
154 checks passed
amoghrajesh pushed a commit to astronomer/airflow that referenced this pull request Dec 29, 2025
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Jan 2, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
stegololz pushed a commit to stegololz/airflow that referenced this pull request Jan 9, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
jhgoebbert pushed a commit to jhgoebbert/airflow_Owen-CH-Leung that referenced this pull request Feb 8, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Mar 4, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
@github-actions

Copy link
Copy Markdown
Contributor

Backport failed to create: v3-1-test. View the failure log Run details

Note: As of Merging PRs targeted for Airflow 3.X
the committer who merges the PR is responsible for backporting the PRs that are bug fixes (generally speaking) to the maintenance branches.

In matter of doubt please ask in #release-management Slack channel.

StatusBranchResult
v3-1-testCommit Link

You can attempt to backport this manually by running:

cherry_picker 3428dc9 v3-1-test

This should apply the commit to the v3-1-test branch and leave the commit in conflict state marking
the files that need manual conflict resolution.

After you have resolved the conflicts, you can continue the backport process by running:

cherry_picker --continue

If you don't have cherry-picker installed, see the installation guide.

@eladkaleladkal added this to the Airflow 3.1.9 milestone Mar 6, 2026
Dev-iL added a commit to Dev-iL/airflow that referenced this pull request Mar 6, 2026
…pache#59801)
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 <noreply@anthropic.com>
eladkal pushed a commit that referenced this pull request Mar 6, 2026
…#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 <noreply@anthropic.com>
vatsrahul1001 pushed a commit that referenced this pull request Mar 10, 2026
…#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 <noreply@anthropic.com>
pierrejeambrun added a commit that referenced this pull request Mar 10, 2026
* 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 <noreply@anthropic.com>
* 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](dsherret/ts-morph@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] <support@github.com>
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 25e9284)
Co-authored-by: Pradeep Kalluri <128097794+kalluripradeep@users.noreply.github.com>
* [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 41969f4)
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* [v3-1-test] CI: Upgrade important CI environment (#62989) (#63005)
* [v3-1-test] CI: Upgrade important CI environment (#62989)
(cherry picked from commit 60b52b7)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* Fix rebase
---------
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* [v3-1-test] Align integration LocalStack docker-compose with e2e LocalStack config (#62980) (#62993)
(cherry picked from commit 6722c4b)
Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
* [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 fef2e62)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* 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 <95105677+jscheffl@users.noreply.github.com>
* 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](actions/setup-java@c5195ef...be666c2)
---
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] <support@github.com>
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](actions/stale@5bef64f...b5d41d4)
---
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] <support@github.com>
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](actions/checkout@11bd719...de0fac2)
---
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] <support@github.com>
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](actions/setup-python@a26af69...a309ff8)
---
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] <support@github.com>
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](actions/github-script@60a0d83...ed59741)
---
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] <support@github.com>
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 a2e3613)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
* 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/react@3.34.0/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@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] <support@github.com>
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](actions/upload-artifact@ea165f8...bbbca2d)
---
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] <support@github.com>
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](actions/setup-go@d35c59a...4b73464)
---
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] <support@github.com>
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](aws-actions/configure-aws-credentials@010d0da...8df5847)
---
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] <support@github.com>
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](actions/setup-node@49933ea...53b8394)
---
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] <support@github.com>
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](actions/setup-go@d35c59a...4b73464)
(cherry picked from commit 274c2b0)
---
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] <support@github.com>
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](actions/download-artifact@d3f86a1...70fc10c)
(cherry picked from commit 2f4646c)
---
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] <support@github.com>
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](pnpm/action-setup@fe02b34...41ff726)
Updates `slackapi/slack-github-action` from 2.0.0 to 2.1.1
- [Release notes](https://github.com/slackapi/slack-github-action/releases)
- [Commits](slackapi/slack-github-action@485a9d4...91efab1)
---
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] <support@github.com>
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 13af96b)
Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: pierrejeambrun <pierrejbrun@gmail.com>
* 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 a915216)
Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* [v3-1-test] Bump astroid>=4 (#63170) (#63174)
(cherry picked from commit 0a985ea)
Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
* 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/react@3.34.0/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@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] <support@github.com>
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 b528e50)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* 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 <kimyoungi99@naver.com>
* 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](github/codeql-action@ce28f5b...0d579ff)
---
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] <support@github.com>
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 9ae1875)
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
* [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 a1717a6 and carried forward into the
inlined copies in both Dockerfiles.
(cherry picked from commit 2ab6f94)
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* 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 7bc23ef)
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Dev-iL <6509619+Dev-iL@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Wei Lee <weilee.rx@gmail.com>
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 <128097794+kalluripradeep@users.noreply.github.com>
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
Co-authored-by: Bugra Ozturk <bugraoz93@users.noreply.github.com>
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
Co-authored-by: Vincent <97131062+vincbeck@users.noreply.github.com>
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
Co-authored-by: Young-Ki Kim <kimyoungi99@naver.com>
Co-authored-by: Subham <subhamsangwan26@gmail.com>
Ankurdeewan pushed a commit to Ankurdeewan/airflow that referenced this pull request Mar 15, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
vatsrahul1001 pushed a commit that referenced this pull request Mar 25, 2026
…#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 <noreply@anthropic.com>
vatsrahul1001 pushed a commit that referenced this pull request Mar 25, 2026
* 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 <noreply@anthropic.com>
* 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](dsherret/ts-morph@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] <support@github.com>
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 25e9284)
Co-authored-by: Pradeep Kalluri <128097794+kalluripradeep@users.noreply.github.com>
* [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 41969f4)
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* [v3-1-test] CI: Upgrade important CI environment (#62989) (#63005)
* [v3-1-test] CI: Upgrade important CI environment (#62989)
(cherry picked from commit 60b52b7)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* Fix rebase
---------
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* [v3-1-test] Align integration LocalStack docker-compose with e2e LocalStack config (#62980) (#62993)
(cherry picked from commit 6722c4b)
Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
* [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 fef2e62)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* 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 <95105677+jscheffl@users.noreply.github.com>
* 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](actions/setup-java@c5195ef...be666c2)
---
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] <support@github.com>
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](actions/stale@5bef64f...b5d41d4)
---
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] <support@github.com>
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](actions/checkout@11bd719...de0fac2)
---
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] <support@github.com>
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](actions/setup-python@a26af69...a309ff8)
---
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] <support@github.com>
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](actions/github-script@60a0d83...ed59741)
---
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] <support@github.com>
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 a2e3613)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
* 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/react@3.34.0/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@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] <support@github.com>
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](actions/upload-artifact@ea165f8...bbbca2d)
---
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] <support@github.com>
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](actions/setup-go@d35c59a...4b73464)
---
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] <support@github.com>
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](aws-actions/configure-aws-credentials@010d0da...8df5847)
---
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] <support@github.com>
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](actions/setup-node@49933ea...53b8394)
---
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] <support@github.com>
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](actions/setup-go@d35c59a...4b73464)
(cherry picked from commit 274c2b0)
---
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] <support@github.com>
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](actions/download-artifact@d3f86a1...70fc10c)
(cherry picked from commit 2f4646c)
---
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] <support@github.com>
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](pnpm/action-setup@fe02b34...41ff726)
Updates `slackapi/slack-github-action` from 2.0.0 to 2.1.1
- [Release notes](https://github.com/slackapi/slack-github-action/releases)
- [Commits](slackapi/slack-github-action@485a9d4...91efab1)
---
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] <support@github.com>
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 13af96b)
Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: pierrejeambrun <pierrejbrun@gmail.com>
* 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 a915216)
Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* [v3-1-test] Bump astroid>=4 (#63170) (#63174)
(cherry picked from commit 0a985ea)
Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
* 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/react@3.34.0/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@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] <support@github.com>
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 b528e50)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* 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 <kimyoungi99@naver.com>
* 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](github/codeql-action@ce28f5b...0d579ff)
---
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] <support@github.com>
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 9ae1875)
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
* [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 a1717a6 and carried forward into the
inlined copies in both Dockerfiles.
(cherry picked from commit 2ab6f94)
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* 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 7bc23ef)
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Dev-iL <6509619+Dev-iL@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Wei Lee <weilee.rx@gmail.com>
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 <128097794+kalluripradeep@users.noreply.github.com>
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
Co-authored-by: Bugra Ozturk <bugraoz93@users.noreply.github.com>
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
Co-authored-by: Vincent <97131062+vincbeck@users.noreply.github.com>
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
Co-authored-by: Young-Ki Kim <kimyoungi99@naver.com>
Co-authored-by: Subham <subhamsangwan26@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

all versionsIf set, the CI build will be forced to use all versions of Python/K8S/DBsarea:task-sdk

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Dev-iL@jscheffl@potiuk@eladkal
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Fix flaky test_reading_from_pipes on Python 3.13 with pytest-xdist by Dev-iL · Pull Request #59801 · apache/airflow · GitHub
Skip to content

Fix flaky test_reading_from_pipes on Python 3.13 with pytest-xdist - #59801

Merged
jscheffl merged 1 commit into
apache:mainfrom
Dev-iL:2512/fix_flaky_pipes
Dec 25, 2025
Merged

Fix flaky test_reading_from_pipes on Python 3.13 with pytest-xdist#59801
jscheffl merged 1 commit into
apache:mainfrom
Dev-iL:2512/fix_flaky_pipes

Conversation

@Dev-iL

@Dev-iLDev-iL commented Dec 25, 2025

Copy link
Copy Markdown
Collaborator

Summary

This PR fixes the flaky test_reading_from_pipes test on Python 3.13 with pytest-xdist through two complementary fixes.

Fix 1: Defensive improvements

These changes address the symptom pathway where inherited mocks in forked processes could trigger warnings:

  1. context.py: Changed hasattr() to getattr() to avoid triggering coroutine creation when checking for async methods on AsyncMock objects
  2. test_supervisor.py: Added use_real_secrets_backends fixture to ensure real backend instances are used in subprocess tests, preventing inheritance of mocked backends across fork boundaries
  3. supervisor.py: Fixed resource cleanup in _remote_logging_conn() with explicit del statements to prevent leaking client references
  4. client.py: Fixed lru_cache binding by calling via type(self) instead of self to avoid carrying stale cache state across forked processes

Fix 2: Root cause fix

The actual source of the unawaited coroutine was in test_runtime_error_triggers_greenback_fallback in test_secrets.py:

  1. The test mocked greenback.await_ to return a value directly without actually awaiting anything
  2. When backend.get_connection() executed greenback.await_(self.aget_connection(conn_id)), a real coroutine was created
  3. The mocked greenback.await_ returned immediately without awaiting that coroutine
  4. When the orphaned coroutine was garbage collected, Python 3.13 raised RuntimeWarning: coroutine 'ExecutionAPISecretsBackend.aget_connection' was never awaited
  5. When tests ran in parallel with pytest-xdist, this warning appeared in captured_logs of other tests, causing assertion failures

The fix: Modified the test to mock greenback.await_ with a side_effect that actually awaits the coroutine, and mock aget_connection to return the expected connection directly.

Both fixes together make the codebase more robust against async-related test flakiness on Python 3.13.


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@jscheffljscheffl added the all versions If set, the CI build will be forced to use all versions of Python/K8S/DBs label Dec 25, 2025
@jscheffl

Copy link
Copy Markdown
Contributor

Close and re-open to force a new CI run...

@jscheffljscheffl reopened this Dec 25, 2025
@Dev-iL
Dev-iLforce-pushed the 2512/fix_flaky_pipes branch from f09dd76 to 053f3bdCompareDecember 25, 2025 09:59
@jscheffl
jscheffl self-requested a review December 25, 2025 10:14
@potiuk

Copy link
Copy Markdown
Member

Hmm. Mypy failed

@Dev-iL
Dev-iLforce-pushed the 2512/fix_flaky_pipes branch from 053f3bd to 321fbb8CompareDecember 25, 2025 11:08
@Dev-iL

Dev-iL commented Dec 25, 2025

Copy link
Copy Markdown
CollaboratorAuthor

I did some more local testing, There was another flaky test in there. Let's hope it's fine now.

Please note that the AI introduced additional changes since your approval.

The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
@Dev-iL
Dev-iLforce-pushed the 2512/fix_flaky_pipes branch from 321fbb8 to 763d21bCompareDecember 25, 2025 11:50
@jscheffl
jscheffl merged commit 3428dc9 into apache:mainDec 25, 2025
154 checks passed
amoghrajesh pushed a commit to astronomer/airflow that referenced this pull request Dec 29, 2025
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Jan 2, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
stegololz pushed a commit to stegololz/airflow that referenced this pull request Jan 9, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
jhgoebbert pushed a commit to jhgoebbert/airflow_Owen-CH-Leung that referenced this pull request Feb 8, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Mar 4, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
@github-actions

Copy link
Copy Markdown
Contributor

Backport failed to create: v3-1-test. View the failure log Run details

Note: As of Merging PRs targeted for Airflow 3.X
the committer who merges the PR is responsible for backporting the PRs that are bug fixes (generally speaking) to the maintenance branches.

In matter of doubt please ask in #release-management Slack channel.

StatusBranchResult
v3-1-testCommit Link

You can attempt to backport this manually by running:

cherry_picker 3428dc9 v3-1-test

This should apply the commit to the v3-1-test branch and leave the commit in conflict state marking
the files that need manual conflict resolution.

After you have resolved the conflicts, you can continue the backport process by running:

cherry_picker --continue

If you don't have cherry-picker installed, see the installation guide.

@eladkaleladkal added this to the Airflow 3.1.9 milestone Mar 6, 2026
Dev-iL added a commit to Dev-iL/airflow that referenced this pull request Mar 6, 2026
…pache#59801)
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 <noreply@anthropic.com>
eladkal pushed a commit that referenced this pull request Mar 6, 2026
…#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 <noreply@anthropic.com>
vatsrahul1001 pushed a commit that referenced this pull request Mar 10, 2026
…#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 <noreply@anthropic.com>
pierrejeambrun added a commit that referenced this pull request Mar 10, 2026
* 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 <noreply@anthropic.com>
* 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](dsherret/ts-morph@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] <support@github.com>
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 25e9284)
Co-authored-by: Pradeep Kalluri <128097794+kalluripradeep@users.noreply.github.com>
* [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 41969f4)
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* [v3-1-test] CI: Upgrade important CI environment (#62989) (#63005)
* [v3-1-test] CI: Upgrade important CI environment (#62989)
(cherry picked from commit 60b52b7)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* Fix rebase
---------
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* [v3-1-test] Align integration LocalStack docker-compose with e2e LocalStack config (#62980) (#62993)
(cherry picked from commit 6722c4b)
Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
* [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 fef2e62)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* 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 <95105677+jscheffl@users.noreply.github.com>
* 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](actions/setup-java@c5195ef...be666c2)
---
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] <support@github.com>
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](actions/stale@5bef64f...b5d41d4)
---
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] <support@github.com>
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](actions/checkout@11bd719...de0fac2)
---
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] <support@github.com>
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](actions/setup-python@a26af69...a309ff8)
---
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] <support@github.com>
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](actions/github-script@60a0d83...ed59741)
---
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] <support@github.com>
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 a2e3613)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
* 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/react@3.34.0/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@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] <support@github.com>
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](actions/upload-artifact@ea165f8...bbbca2d)
---
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] <support@github.com>
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](actions/setup-go@d35c59a...4b73464)
---
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] <support@github.com>
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](aws-actions/configure-aws-credentials@010d0da...8df5847)
---
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] <support@github.com>
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](actions/setup-node@49933ea...53b8394)
---
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] <support@github.com>
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](actions/setup-go@d35c59a...4b73464)
(cherry picked from commit 274c2b0)
---
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] <support@github.com>
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](actions/download-artifact@d3f86a1...70fc10c)
(cherry picked from commit 2f4646c)
---
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] <support@github.com>
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](pnpm/action-setup@fe02b34...41ff726)
Updates `slackapi/slack-github-action` from 2.0.0 to 2.1.1
- [Release notes](https://github.com/slackapi/slack-github-action/releases)
- [Commits](slackapi/slack-github-action@485a9d4...91efab1)
---
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] <support@github.com>
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 13af96b)
Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: pierrejeambrun <pierrejbrun@gmail.com>
* 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 a915216)
Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* [v3-1-test] Bump astroid>=4 (#63170) (#63174)
(cherry picked from commit 0a985ea)
Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
* 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/react@3.34.0/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@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] <support@github.com>
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 b528e50)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* 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 <kimyoungi99@naver.com>
* 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](github/codeql-action@ce28f5b...0d579ff)
---
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] <support@github.com>
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 9ae1875)
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
* [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 a1717a6 and carried forward into the
inlined copies in both Dockerfiles.
(cherry picked from commit 2ab6f94)
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* 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 7bc23ef)
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Dev-iL <6509619+Dev-iL@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Wei Lee <weilee.rx@gmail.com>
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 <128097794+kalluripradeep@users.noreply.github.com>
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
Co-authored-by: Bugra Ozturk <bugraoz93@users.noreply.github.com>
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
Co-authored-by: Vincent <97131062+vincbeck@users.noreply.github.com>
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
Co-authored-by: Young-Ki Kim <kimyoungi99@naver.com>
Co-authored-by: Subham <subhamsangwan26@gmail.com>
Ankurdeewan pushed a commit to Ankurdeewan/airflow that referenced this pull request Mar 15, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
vatsrahul1001 pushed a commit that referenced this pull request Mar 25, 2026
…#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 <noreply@anthropic.com>
vatsrahul1001 pushed a commit that referenced this pull request Mar 25, 2026
* 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 <noreply@anthropic.com>
* 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](dsherret/ts-morph@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] <support@github.com>
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 25e9284)
Co-authored-by: Pradeep Kalluri <128097794+kalluripradeep@users.noreply.github.com>
* [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 41969f4)
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* [v3-1-test] CI: Upgrade important CI environment (#62989) (#63005)
* [v3-1-test] CI: Upgrade important CI environment (#62989)
(cherry picked from commit 60b52b7)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* Fix rebase
---------
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* [v3-1-test] Align integration LocalStack docker-compose with e2e LocalStack config (#62980) (#62993)
(cherry picked from commit 6722c4b)
Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
* [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 fef2e62)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* 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 <95105677+jscheffl@users.noreply.github.com>
* 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](actions/setup-java@c5195ef...be666c2)
---
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] <support@github.com>
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](actions/stale@5bef64f...b5d41d4)
---
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] <support@github.com>
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](actions/checkout@11bd719...de0fac2)
---
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] <support@github.com>
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](actions/setup-python@a26af69...a309ff8)
---
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] <support@github.com>
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](actions/github-script@60a0d83...ed59741)
---
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] <support@github.com>
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 a2e3613)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
* 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/react@3.34.0/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@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] <support@github.com>
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](actions/upload-artifact@ea165f8...bbbca2d)
---
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] <support@github.com>
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](actions/setup-go@d35c59a...4b73464)
---
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] <support@github.com>
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](aws-actions/configure-aws-credentials@010d0da...8df5847)
---
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] <support@github.com>
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](actions/setup-node@49933ea...53b8394)
---
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] <support@github.com>
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](actions/setup-go@d35c59a...4b73464)
(cherry picked from commit 274c2b0)
---
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] <support@github.com>
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](actions/download-artifact@d3f86a1...70fc10c)
(cherry picked from commit 2f4646c)
---
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] <support@github.com>
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](pnpm/action-setup@fe02b34...41ff726)
Updates `slackapi/slack-github-action` from 2.0.0 to 2.1.1
- [Release notes](https://github.com/slackapi/slack-github-action/releases)
- [Commits](slackapi/slack-github-action@485a9d4...91efab1)
---
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] <support@github.com>
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 13af96b)
Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: pierrejeambrun <pierrejbrun@gmail.com>
* 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 a915216)
Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* [v3-1-test] Bump astroid>=4 (#63170) (#63174)
(cherry picked from commit 0a985ea)
Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
* 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/react@3.34.0/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@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] <support@github.com>
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 b528e50)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* 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 <kimyoungi99@naver.com>
* 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](github/codeql-action@ce28f5b...0d579ff)
---
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] <support@github.com>
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 9ae1875)
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
* [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 a1717a6 and carried forward into the
inlined copies in both Dockerfiles.
(cherry picked from commit 2ab6f94)
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* 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 7bc23ef)
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Dev-iL <6509619+Dev-iL@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Wei Lee <weilee.rx@gmail.com>
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 <128097794+kalluripradeep@users.noreply.github.com>
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
Co-authored-by: Bugra Ozturk <bugraoz93@users.noreply.github.com>
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
Co-authored-by: Vincent <97131062+vincbeck@users.noreply.github.com>
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
Co-authored-by: Young-Ki Kim <kimyoungi99@naver.com>
Co-authored-by: Subham <subhamsangwan26@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

all versionsIf set, the CI build will be forced to use all versions of Python/K8S/DBsarea:task-sdk

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Dev-iL@jscheffl@potiuk@eladkal
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Fix flaky test_reading_from_pipes on Python 3.13 with pytest-xdist by Dev-iL · Pull Request #59801 · apache/airflow · GitHub
Skip to content

Fix flaky test_reading_from_pipes on Python 3.13 with pytest-xdist - #59801

Merged
jscheffl merged 1 commit into
apache:mainfrom
Dev-iL:2512/fix_flaky_pipes
Dec 25, 2025
Merged

Fix flaky test_reading_from_pipes on Python 3.13 with pytest-xdist#59801
jscheffl merged 1 commit into
apache:mainfrom
Dev-iL:2512/fix_flaky_pipes

Conversation

@Dev-iL

@Dev-iLDev-iL commented Dec 25, 2025

Copy link
Copy Markdown
Collaborator

Summary

This PR fixes the flaky test_reading_from_pipes test on Python 3.13 with pytest-xdist through two complementary fixes.

Fix 1: Defensive improvements

These changes address the symptom pathway where inherited mocks in forked processes could trigger warnings:

  1. context.py: Changed hasattr() to getattr() to avoid triggering coroutine creation when checking for async methods on AsyncMock objects
  2. test_supervisor.py: Added use_real_secrets_backends fixture to ensure real backend instances are used in subprocess tests, preventing inheritance of mocked backends across fork boundaries
  3. supervisor.py: Fixed resource cleanup in _remote_logging_conn() with explicit del statements to prevent leaking client references
  4. client.py: Fixed lru_cache binding by calling via type(self) instead of self to avoid carrying stale cache state across forked processes

Fix 2: Root cause fix

The actual source of the unawaited coroutine was in test_runtime_error_triggers_greenback_fallback in test_secrets.py:

  1. The test mocked greenback.await_ to return a value directly without actually awaiting anything
  2. When backend.get_connection() executed greenback.await_(self.aget_connection(conn_id)), a real coroutine was created
  3. The mocked greenback.await_ returned immediately without awaiting that coroutine
  4. When the orphaned coroutine was garbage collected, Python 3.13 raised RuntimeWarning: coroutine 'ExecutionAPISecretsBackend.aget_connection' was never awaited
  5. When tests ran in parallel with pytest-xdist, this warning appeared in captured_logs of other tests, causing assertion failures

The fix: Modified the test to mock greenback.await_ with a side_effect that actually awaits the coroutine, and mock aget_connection to return the expected connection directly.

Both fixes together make the codebase more robust against async-related test flakiness on Python 3.13.


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@jscheffljscheffl added the all versions If set, the CI build will be forced to use all versions of Python/K8S/DBs label Dec 25, 2025
@jscheffl

Copy link
Copy Markdown
Contributor

Close and re-open to force a new CI run...

@jscheffljscheffl reopened this Dec 25, 2025
@Dev-iL
Dev-iLforce-pushed the 2512/fix_flaky_pipes branch from f09dd76 to 053f3bdCompareDecember 25, 2025 09:59
@jscheffl
jscheffl self-requested a review December 25, 2025 10:14
@potiuk

Copy link
Copy Markdown
Member

Hmm. Mypy failed

@Dev-iL
Dev-iLforce-pushed the 2512/fix_flaky_pipes branch from 053f3bd to 321fbb8CompareDecember 25, 2025 11:08
@Dev-iL

Dev-iL commented Dec 25, 2025

Copy link
Copy Markdown
CollaboratorAuthor

I did some more local testing, There was another flaky test in there. Let's hope it's fine now.

Please note that the AI introduced additional changes since your approval.

The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
@Dev-iL
Dev-iLforce-pushed the 2512/fix_flaky_pipes branch from 321fbb8 to 763d21bCompareDecember 25, 2025 11:50
@jscheffl
jscheffl merged commit 3428dc9 into apache:mainDec 25, 2025
154 checks passed
amoghrajesh pushed a commit to astronomer/airflow that referenced this pull request Dec 29, 2025
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Jan 2, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
stegololz pushed a commit to stegololz/airflow that referenced this pull request Jan 9, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
jhgoebbert pushed a commit to jhgoebbert/airflow_Owen-CH-Leung that referenced this pull request Feb 8, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Mar 4, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
@github-actions

Copy link
Copy Markdown
Contributor

Backport failed to create: v3-1-test. View the failure log Run details

Note: As of Merging PRs targeted for Airflow 3.X
the committer who merges the PR is responsible for backporting the PRs that are bug fixes (generally speaking) to the maintenance branches.

In matter of doubt please ask in #release-management Slack channel.

StatusBranchResult
v3-1-testCommit Link

You can attempt to backport this manually by running:

cherry_picker 3428dc9 v3-1-test

This should apply the commit to the v3-1-test branch and leave the commit in conflict state marking
the files that need manual conflict resolution.

After you have resolved the conflicts, you can continue the backport process by running:

cherry_picker --continue

If you don't have cherry-picker installed, see the installation guide.

@eladkaleladkal added this to the Airflow 3.1.9 milestone Mar 6, 2026
Dev-iL added a commit to Dev-iL/airflow that referenced this pull request Mar 6, 2026
…pache#59801)
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 <noreply@anthropic.com>
eladkal pushed a commit that referenced this pull request Mar 6, 2026
…#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 <noreply@anthropic.com>
vatsrahul1001 pushed a commit that referenced this pull request Mar 10, 2026
…#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 <noreply@anthropic.com>
pierrejeambrun added a commit that referenced this pull request Mar 10, 2026
* 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 <noreply@anthropic.com>
* 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](dsherret/ts-morph@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] <support@github.com>
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 25e9284)
Co-authored-by: Pradeep Kalluri <128097794+kalluripradeep@users.noreply.github.com>
* [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 41969f4)
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* [v3-1-test] CI: Upgrade important CI environment (#62989) (#63005)
* [v3-1-test] CI: Upgrade important CI environment (#62989)
(cherry picked from commit 60b52b7)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* Fix rebase
---------
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* [v3-1-test] Align integration LocalStack docker-compose with e2e LocalStack config (#62980) (#62993)
(cherry picked from commit 6722c4b)
Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
* [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 fef2e62)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* 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 <95105677+jscheffl@users.noreply.github.com>
* 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](actions/setup-java@c5195ef...be666c2)
---
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] <support@github.com>
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](actions/stale@5bef64f...b5d41d4)
---
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] <support@github.com>
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](actions/checkout@11bd719...de0fac2)
---
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] <support@github.com>
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](actions/setup-python@a26af69...a309ff8)
---
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] <support@github.com>
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](actions/github-script@60a0d83...ed59741)
---
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] <support@github.com>
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 a2e3613)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
* 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/react@3.34.0/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@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] <support@github.com>
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](actions/upload-artifact@ea165f8...bbbca2d)
---
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] <support@github.com>
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](actions/setup-go@d35c59a...4b73464)
---
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] <support@github.com>
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](aws-actions/configure-aws-credentials@010d0da...8df5847)
---
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] <support@github.com>
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](actions/setup-node@49933ea...53b8394)
---
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] <support@github.com>
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](actions/setup-go@d35c59a...4b73464)
(cherry picked from commit 274c2b0)
---
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] <support@github.com>
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](actions/download-artifact@d3f86a1...70fc10c)
(cherry picked from commit 2f4646c)
---
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] <support@github.com>
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](pnpm/action-setup@fe02b34...41ff726)
Updates `slackapi/slack-github-action` from 2.0.0 to 2.1.1
- [Release notes](https://github.com/slackapi/slack-github-action/releases)
- [Commits](slackapi/slack-github-action@485a9d4...91efab1)
---
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] <support@github.com>
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 13af96b)
Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: pierrejeambrun <pierrejbrun@gmail.com>
* 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 a915216)
Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* [v3-1-test] Bump astroid>=4 (#63170) (#63174)
(cherry picked from commit 0a985ea)
Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
* 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/react@3.34.0/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@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] <support@github.com>
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 b528e50)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* 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 <kimyoungi99@naver.com>
* 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](github/codeql-action@ce28f5b...0d579ff)
---
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] <support@github.com>
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 9ae1875)
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
* [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 a1717a6 and carried forward into the
inlined copies in both Dockerfiles.
(cherry picked from commit 2ab6f94)
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* 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 7bc23ef)
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Dev-iL <6509619+Dev-iL@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Wei Lee <weilee.rx@gmail.com>
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 <128097794+kalluripradeep@users.noreply.github.com>
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
Co-authored-by: Bugra Ozturk <bugraoz93@users.noreply.github.com>
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
Co-authored-by: Vincent <97131062+vincbeck@users.noreply.github.com>
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
Co-authored-by: Young-Ki Kim <kimyoungi99@naver.com>
Co-authored-by: Subham <subhamsangwan26@gmail.com>
Ankurdeewan pushed a commit to Ankurdeewan/airflow that referenced this pull request Mar 15, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
vatsrahul1001 pushed a commit that referenced this pull request Mar 25, 2026
…#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 <noreply@anthropic.com>
vatsrahul1001 pushed a commit that referenced this pull request Mar 25, 2026
* 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 <noreply@anthropic.com>
* 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](dsherret/ts-morph@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] <support@github.com>
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 25e9284)
Co-authored-by: Pradeep Kalluri <128097794+kalluripradeep@users.noreply.github.com>
* [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 41969f4)
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* [v3-1-test] CI: Upgrade important CI environment (#62989) (#63005)
* [v3-1-test] CI: Upgrade important CI environment (#62989)
(cherry picked from commit 60b52b7)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* Fix rebase
---------
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* [v3-1-test] Align integration LocalStack docker-compose with e2e LocalStack config (#62980) (#62993)
(cherry picked from commit 6722c4b)
Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
* [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 fef2e62)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* 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 <95105677+jscheffl@users.noreply.github.com>
* 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](actions/setup-java@c5195ef...be666c2)
---
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] <support@github.com>
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](actions/stale@5bef64f...b5d41d4)
---
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] <support@github.com>
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](actions/checkout@11bd719...de0fac2)
---
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] <support@github.com>
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](actions/setup-python@a26af69...a309ff8)
---
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] <support@github.com>
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](actions/github-script@60a0d83...ed59741)
---
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] <support@github.com>
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 a2e3613)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
* 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/react@3.34.0/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@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] <support@github.com>
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](actions/upload-artifact@ea165f8...bbbca2d)
---
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] <support@github.com>
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](actions/setup-go@d35c59a...4b73464)
---
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] <support@github.com>
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](aws-actions/configure-aws-credentials@010d0da...8df5847)
---
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] <support@github.com>
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](actions/setup-node@49933ea...53b8394)
---
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] <support@github.com>
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](actions/setup-go@d35c59a...4b73464)
(cherry picked from commit 274c2b0)
---
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] <support@github.com>
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](actions/download-artifact@d3f86a1...70fc10c)
(cherry picked from commit 2f4646c)
---
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] <support@github.com>
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](pnpm/action-setup@fe02b34...41ff726)
Updates `slackapi/slack-github-action` from 2.0.0 to 2.1.1
- [Release notes](https://github.com/slackapi/slack-github-action/releases)
- [Commits](slackapi/slack-github-action@485a9d4...91efab1)
---
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] <support@github.com>
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 13af96b)
Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: pierrejeambrun <pierrejbrun@gmail.com>
* 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 a915216)
Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* [v3-1-test] Bump astroid>=4 (#63170) (#63174)
(cherry picked from commit 0a985ea)
Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
* 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/react@3.34.0/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@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] <support@github.com>
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 b528e50)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* 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 <kimyoungi99@naver.com>
* 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](github/codeql-action@ce28f5b...0d579ff)
---
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] <support@github.com>
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 9ae1875)
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
* [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 a1717a6 and carried forward into the
inlined copies in both Dockerfiles.
(cherry picked from commit 2ab6f94)
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* 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 7bc23ef)
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Dev-iL <6509619+Dev-iL@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Wei Lee <weilee.rx@gmail.com>
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 <128097794+kalluripradeep@users.noreply.github.com>
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
Co-authored-by: Bugra Ozturk <bugraoz93@users.noreply.github.com>
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
Co-authored-by: Vincent <97131062+vincbeck@users.noreply.github.com>
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
Co-authored-by: Young-Ki Kim <kimyoungi99@naver.com>
Co-authored-by: Subham <subhamsangwan26@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

all versionsIf set, the CI build will be forced to use all versions of Python/K8S/DBsarea:task-sdk

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Dev-iL@jscheffl@potiuk@eladkal
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Fix flaky test_reading_from_pipes on Python 3.13 with pytest-xdist by Dev-iL · Pull Request #59801 · apache/airflow · GitHub
Skip to content

Fix flaky test_reading_from_pipes on Python 3.13 with pytest-xdist - #59801

Merged
jscheffl merged 1 commit into
apache:mainfrom
Dev-iL:2512/fix_flaky_pipes
Dec 25, 2025
Merged

Fix flaky test_reading_from_pipes on Python 3.13 with pytest-xdist#59801
jscheffl merged 1 commit into
apache:mainfrom
Dev-iL:2512/fix_flaky_pipes

Conversation

@Dev-iL

@Dev-iLDev-iL commented Dec 25, 2025

Copy link
Copy Markdown
Collaborator

Summary

This PR fixes the flaky test_reading_from_pipes test on Python 3.13 with pytest-xdist through two complementary fixes.

Fix 1: Defensive improvements

These changes address the symptom pathway where inherited mocks in forked processes could trigger warnings:

  1. context.py: Changed hasattr() to getattr() to avoid triggering coroutine creation when checking for async methods on AsyncMock objects
  2. test_supervisor.py: Added use_real_secrets_backends fixture to ensure real backend instances are used in subprocess tests, preventing inheritance of mocked backends across fork boundaries
  3. supervisor.py: Fixed resource cleanup in _remote_logging_conn() with explicit del statements to prevent leaking client references
  4. client.py: Fixed lru_cache binding by calling via type(self) instead of self to avoid carrying stale cache state across forked processes

Fix 2: Root cause fix

The actual source of the unawaited coroutine was in test_runtime_error_triggers_greenback_fallback in test_secrets.py:

  1. The test mocked greenback.await_ to return a value directly without actually awaiting anything
  2. When backend.get_connection() executed greenback.await_(self.aget_connection(conn_id)), a real coroutine was created
  3. The mocked greenback.await_ returned immediately without awaiting that coroutine
  4. When the orphaned coroutine was garbage collected, Python 3.13 raised RuntimeWarning: coroutine 'ExecutionAPISecretsBackend.aget_connection' was never awaited
  5. When tests ran in parallel with pytest-xdist, this warning appeared in captured_logs of other tests, causing assertion failures

The fix: Modified the test to mock greenback.await_ with a side_effect that actually awaits the coroutine, and mock aget_connection to return the expected connection directly.

Both fixes together make the codebase more robust against async-related test flakiness on Python 3.13.


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@jscheffljscheffl added the all versions If set, the CI build will be forced to use all versions of Python/K8S/DBs label Dec 25, 2025
@jscheffl

Copy link
Copy Markdown
Contributor

Close and re-open to force a new CI run...

@jscheffljscheffl reopened this Dec 25, 2025
@Dev-iL
Dev-iLforce-pushed the 2512/fix_flaky_pipes branch from f09dd76 to 053f3bdCompareDecember 25, 2025 09:59
@jscheffl
jscheffl self-requested a review December 25, 2025 10:14
@potiuk

Copy link
Copy Markdown
Member

Hmm. Mypy failed

@Dev-iL
Dev-iLforce-pushed the 2512/fix_flaky_pipes branch from 053f3bd to 321fbb8CompareDecember 25, 2025 11:08
@Dev-iL

Dev-iL commented Dec 25, 2025

Copy link
Copy Markdown
CollaboratorAuthor

I did some more local testing, There was another flaky test in there. Let's hope it's fine now.

Please note that the AI introduced additional changes since your approval.

The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
@Dev-iL
Dev-iLforce-pushed the 2512/fix_flaky_pipes branch from 321fbb8 to 763d21bCompareDecember 25, 2025 11:50
@jscheffl
jscheffl merged commit 3428dc9 into apache:mainDec 25, 2025
154 checks passed
amoghrajesh pushed a commit to astronomer/airflow that referenced this pull request Dec 29, 2025
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Jan 2, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
stegololz pushed a commit to stegololz/airflow that referenced this pull request Jan 9, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
jhgoebbert pushed a commit to jhgoebbert/airflow_Owen-CH-Leung that referenced this pull request Feb 8, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Mar 4, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
@github-actions

Copy link
Copy Markdown
Contributor

Backport failed to create: v3-1-test. View the failure log Run details

Note: As of Merging PRs targeted for Airflow 3.X
the committer who merges the PR is responsible for backporting the PRs that are bug fixes (generally speaking) to the maintenance branches.

In matter of doubt please ask in #release-management Slack channel.

StatusBranchResult
v3-1-testCommit Link

You can attempt to backport this manually by running:

cherry_picker 3428dc9 v3-1-test

This should apply the commit to the v3-1-test branch and leave the commit in conflict state marking
the files that need manual conflict resolution.

After you have resolved the conflicts, you can continue the backport process by running:

cherry_picker --continue

If you don't have cherry-picker installed, see the installation guide.

@eladkaleladkal added this to the Airflow 3.1.9 milestone Mar 6, 2026
Dev-iL added a commit to Dev-iL/airflow that referenced this pull request Mar 6, 2026
…pache#59801)
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 <noreply@anthropic.com>
eladkal pushed a commit that referenced this pull request Mar 6, 2026
…#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 <noreply@anthropic.com>
vatsrahul1001 pushed a commit that referenced this pull request Mar 10, 2026
…#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 <noreply@anthropic.com>
pierrejeambrun added a commit that referenced this pull request Mar 10, 2026
* 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 <noreply@anthropic.com>
* 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](dsherret/ts-morph@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] <support@github.com>
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 25e9284)
Co-authored-by: Pradeep Kalluri <128097794+kalluripradeep@users.noreply.github.com>
* [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 41969f4)
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* [v3-1-test] CI: Upgrade important CI environment (#62989) (#63005)
* [v3-1-test] CI: Upgrade important CI environment (#62989)
(cherry picked from commit 60b52b7)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* Fix rebase
---------
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* [v3-1-test] Align integration LocalStack docker-compose with e2e LocalStack config (#62980) (#62993)
(cherry picked from commit 6722c4b)
Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
* [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 fef2e62)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* 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 <95105677+jscheffl@users.noreply.github.com>
* 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](actions/setup-java@c5195ef...be666c2)
---
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] <support@github.com>
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](actions/stale@5bef64f...b5d41d4)
---
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] <support@github.com>
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](actions/checkout@11bd719...de0fac2)
---
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] <support@github.com>
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](actions/setup-python@a26af69...a309ff8)
---
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] <support@github.com>
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](actions/github-script@60a0d83...ed59741)
---
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] <support@github.com>
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 a2e3613)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
* 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/react@3.34.0/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@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] <support@github.com>
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](actions/upload-artifact@ea165f8...bbbca2d)
---
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] <support@github.com>
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](actions/setup-go@d35c59a...4b73464)
---
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] <support@github.com>
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](aws-actions/configure-aws-credentials@010d0da...8df5847)
---
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] <support@github.com>
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](actions/setup-node@49933ea...53b8394)
---
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] <support@github.com>
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](actions/setup-go@d35c59a...4b73464)
(cherry picked from commit 274c2b0)
---
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] <support@github.com>
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](actions/download-artifact@d3f86a1...70fc10c)
(cherry picked from commit 2f4646c)
---
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] <support@github.com>
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](pnpm/action-setup@fe02b34...41ff726)
Updates `slackapi/slack-github-action` from 2.0.0 to 2.1.1
- [Release notes](https://github.com/slackapi/slack-github-action/releases)
- [Commits](slackapi/slack-github-action@485a9d4...91efab1)
---
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] <support@github.com>
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 13af96b)
Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: pierrejeambrun <pierrejbrun@gmail.com>
* 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 a915216)
Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* [v3-1-test] Bump astroid>=4 (#63170) (#63174)
(cherry picked from commit 0a985ea)
Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
* 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/react@3.34.0/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@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] <support@github.com>
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 b528e50)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* 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 <kimyoungi99@naver.com>
* 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](github/codeql-action@ce28f5b...0d579ff)
---
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] <support@github.com>
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 9ae1875)
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
* [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 a1717a6 and carried forward into the
inlined copies in both Dockerfiles.
(cherry picked from commit 2ab6f94)
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* 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 7bc23ef)
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Dev-iL <6509619+Dev-iL@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Wei Lee <weilee.rx@gmail.com>
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 <128097794+kalluripradeep@users.noreply.github.com>
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
Co-authored-by: Bugra Ozturk <bugraoz93@users.noreply.github.com>
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
Co-authored-by: Vincent <97131062+vincbeck@users.noreply.github.com>
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
Co-authored-by: Young-Ki Kim <kimyoungi99@naver.com>
Co-authored-by: Subham <subhamsangwan26@gmail.com>
Ankurdeewan pushed a commit to Ankurdeewan/airflow that referenced this pull request Mar 15, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
vatsrahul1001 pushed a commit that referenced this pull request Mar 25, 2026
…#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 <noreply@anthropic.com>
vatsrahul1001 pushed a commit that referenced this pull request Mar 25, 2026
* 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 <noreply@anthropic.com>
* 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](dsherret/ts-morph@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] <support@github.com>
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 25e9284)
Co-authored-by: Pradeep Kalluri <128097794+kalluripradeep@users.noreply.github.com>
* [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 41969f4)
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* [v3-1-test] CI: Upgrade important CI environment (#62989) (#63005)
* [v3-1-test] CI: Upgrade important CI environment (#62989)
(cherry picked from commit 60b52b7)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* Fix rebase
---------
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* [v3-1-test] Align integration LocalStack docker-compose with e2e LocalStack config (#62980) (#62993)
(cherry picked from commit 6722c4b)
Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
* [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 fef2e62)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* 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 <95105677+jscheffl@users.noreply.github.com>
* 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](actions/setup-java@c5195ef...be666c2)
---
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] <support@github.com>
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](actions/stale@5bef64f...b5d41d4)
---
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] <support@github.com>
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](actions/checkout@11bd719...de0fac2)
---
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] <support@github.com>
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](actions/setup-python@a26af69...a309ff8)
---
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] <support@github.com>
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](actions/github-script@60a0d83...ed59741)
---
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] <support@github.com>
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 a2e3613)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
* 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/react@3.34.0/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@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] <support@github.com>
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](actions/upload-artifact@ea165f8...bbbca2d)
---
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] <support@github.com>
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](actions/setup-go@d35c59a...4b73464)
---
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] <support@github.com>
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](aws-actions/configure-aws-credentials@010d0da...8df5847)
---
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] <support@github.com>
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](actions/setup-node@49933ea...53b8394)
---
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] <support@github.com>
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](actions/setup-go@d35c59a...4b73464)
(cherry picked from commit 274c2b0)
---
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] <support@github.com>
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](actions/download-artifact@d3f86a1...70fc10c)
(cherry picked from commit 2f4646c)
---
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] <support@github.com>
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](pnpm/action-setup@fe02b34...41ff726)
Updates `slackapi/slack-github-action` from 2.0.0 to 2.1.1
- [Release notes](https://github.com/slackapi/slack-github-action/releases)
- [Commits](slackapi/slack-github-action@485a9d4...91efab1)
---
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] <support@github.com>
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 13af96b)
Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: pierrejeambrun <pierrejbrun@gmail.com>
* 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 a915216)
Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* [v3-1-test] Bump astroid>=4 (#63170) (#63174)
(cherry picked from commit 0a985ea)
Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
* 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/react@3.34.0/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@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] <support@github.com>
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 b528e50)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* 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 <kimyoungi99@naver.com>
* 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](github/codeql-action@ce28f5b...0d579ff)
---
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] <support@github.com>
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 9ae1875)
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
* [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 a1717a6 and carried forward into the
inlined copies in both Dockerfiles.
(cherry picked from commit 2ab6f94)
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* 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 7bc23ef)
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Dev-iL <6509619+Dev-iL@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Wei Lee <weilee.rx@gmail.com>
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 <128097794+kalluripradeep@users.noreply.github.com>
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
Co-authored-by: Bugra Ozturk <bugraoz93@users.noreply.github.com>
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
Co-authored-by: Vincent <97131062+vincbeck@users.noreply.github.com>
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
Co-authored-by: Young-Ki Kim <kimyoungi99@naver.com>
Co-authored-by: Subham <subhamsangwan26@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

all versionsIf set, the CI build will be forced to use all versions of Python/K8S/DBsarea:task-sdk

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Dev-iL@jscheffl@potiuk@eladkal
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Fix flaky test_reading_from_pipes on Python 3.13 with pytest-xdist by Dev-iL · Pull Request #59801 · apache/airflow · GitHub
Skip to content

Fix flaky test_reading_from_pipes on Python 3.13 with pytest-xdist - #59801

Merged
jscheffl merged 1 commit into
apache:mainfrom
Dev-iL:2512/fix_flaky_pipes
Dec 25, 2025
Merged

Fix flaky test_reading_from_pipes on Python 3.13 with pytest-xdist#59801
jscheffl merged 1 commit into
apache:mainfrom
Dev-iL:2512/fix_flaky_pipes

Conversation

@Dev-iL

@Dev-iLDev-iL commented Dec 25, 2025

Copy link
Copy Markdown
Collaborator

Summary

This PR fixes the flaky test_reading_from_pipes test on Python 3.13 with pytest-xdist through two complementary fixes.

Fix 1: Defensive improvements

These changes address the symptom pathway where inherited mocks in forked processes could trigger warnings:

  1. context.py: Changed hasattr() to getattr() to avoid triggering coroutine creation when checking for async methods on AsyncMock objects
  2. test_supervisor.py: Added use_real_secrets_backends fixture to ensure real backend instances are used in subprocess tests, preventing inheritance of mocked backends across fork boundaries
  3. supervisor.py: Fixed resource cleanup in _remote_logging_conn() with explicit del statements to prevent leaking client references
  4. client.py: Fixed lru_cache binding by calling via type(self) instead of self to avoid carrying stale cache state across forked processes

Fix 2: Root cause fix

The actual source of the unawaited coroutine was in test_runtime_error_triggers_greenback_fallback in test_secrets.py:

  1. The test mocked greenback.await_ to return a value directly without actually awaiting anything
  2. When backend.get_connection() executed greenback.await_(self.aget_connection(conn_id)), a real coroutine was created
  3. The mocked greenback.await_ returned immediately without awaiting that coroutine
  4. When the orphaned coroutine was garbage collected, Python 3.13 raised RuntimeWarning: coroutine 'ExecutionAPISecretsBackend.aget_connection' was never awaited
  5. When tests ran in parallel with pytest-xdist, this warning appeared in captured_logs of other tests, causing assertion failures

The fix: Modified the test to mock greenback.await_ with a side_effect that actually awaits the coroutine, and mock aget_connection to return the expected connection directly.

Both fixes together make the codebase more robust against async-related test flakiness on Python 3.13.


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@jscheffljscheffl added the all versions If set, the CI build will be forced to use all versions of Python/K8S/DBs label Dec 25, 2025
@jscheffl

Copy link
Copy Markdown
Contributor

Close and re-open to force a new CI run...

@jscheffljscheffl reopened this Dec 25, 2025
@Dev-iL
Dev-iLforce-pushed the 2512/fix_flaky_pipes branch from f09dd76 to 053f3bdCompareDecember 25, 2025 09:59
@jscheffl
jscheffl self-requested a review December 25, 2025 10:14
@potiuk

Copy link
Copy Markdown
Member

Hmm. Mypy failed

@Dev-iL
Dev-iLforce-pushed the 2512/fix_flaky_pipes branch from 053f3bd to 321fbb8CompareDecember 25, 2025 11:08
@Dev-iL

Dev-iL commented Dec 25, 2025

Copy link
Copy Markdown
CollaboratorAuthor

I did some more local testing, There was another flaky test in there. Let's hope it's fine now.

Please note that the AI introduced additional changes since your approval.

The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
@Dev-iL
Dev-iLforce-pushed the 2512/fix_flaky_pipes branch from 321fbb8 to 763d21bCompareDecember 25, 2025 11:50
@jscheffl
jscheffl merged commit 3428dc9 into apache:mainDec 25, 2025
154 checks passed
amoghrajesh pushed a commit to astronomer/airflow that referenced this pull request Dec 29, 2025
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Jan 2, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
stegololz pushed a commit to stegololz/airflow that referenced this pull request Jan 9, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
jhgoebbert pushed a commit to jhgoebbert/airflow_Owen-CH-Leung that referenced this pull request Feb 8, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Mar 4, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
@github-actions

Copy link
Copy Markdown
Contributor

Backport failed to create: v3-1-test. View the failure log Run details

Note: As of Merging PRs targeted for Airflow 3.X
the committer who merges the PR is responsible for backporting the PRs that are bug fixes (generally speaking) to the maintenance branches.

In matter of doubt please ask in #release-management Slack channel.

StatusBranchResult
v3-1-testCommit Link

You can attempt to backport this manually by running:

cherry_picker 3428dc9 v3-1-test

This should apply the commit to the v3-1-test branch and leave the commit in conflict state marking
the files that need manual conflict resolution.

After you have resolved the conflicts, you can continue the backport process by running:

cherry_picker --continue

If you don't have cherry-picker installed, see the installation guide.

@eladkaleladkal added this to the Airflow 3.1.9 milestone Mar 6, 2026
Dev-iL added a commit to Dev-iL/airflow that referenced this pull request Mar 6, 2026
…pache#59801)
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 <noreply@anthropic.com>
eladkal pushed a commit that referenced this pull request Mar 6, 2026
…#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 <noreply@anthropic.com>
vatsrahul1001 pushed a commit that referenced this pull request Mar 10, 2026
…#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 <noreply@anthropic.com>
pierrejeambrun added a commit that referenced this pull request Mar 10, 2026
* 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 <noreply@anthropic.com>
* 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](dsherret/ts-morph@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] <support@github.com>
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 25e9284)
Co-authored-by: Pradeep Kalluri <128097794+kalluripradeep@users.noreply.github.com>
* [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 41969f4)
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* [v3-1-test] CI: Upgrade important CI environment (#62989) (#63005)
* [v3-1-test] CI: Upgrade important CI environment (#62989)
(cherry picked from commit 60b52b7)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* Fix rebase
---------
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* [v3-1-test] Align integration LocalStack docker-compose with e2e LocalStack config (#62980) (#62993)
(cherry picked from commit 6722c4b)
Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
* [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 fef2e62)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* 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 <95105677+jscheffl@users.noreply.github.com>
* 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](actions/setup-java@c5195ef...be666c2)
---
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] <support@github.com>
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](actions/stale@5bef64f...b5d41d4)
---
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] <support@github.com>
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](actions/checkout@11bd719...de0fac2)
---
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] <support@github.com>
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](actions/setup-python@a26af69...a309ff8)
---
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] <support@github.com>
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](actions/github-script@60a0d83...ed59741)
---
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] <support@github.com>
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 a2e3613)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
* 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/react@3.34.0/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@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] <support@github.com>
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](actions/upload-artifact@ea165f8...bbbca2d)
---
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] <support@github.com>
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](actions/setup-go@d35c59a...4b73464)
---
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] <support@github.com>
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](aws-actions/configure-aws-credentials@010d0da...8df5847)
---
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] <support@github.com>
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](actions/setup-node@49933ea...53b8394)
---
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] <support@github.com>
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](actions/setup-go@d35c59a...4b73464)
(cherry picked from commit 274c2b0)
---
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] <support@github.com>
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](actions/download-artifact@d3f86a1...70fc10c)
(cherry picked from commit 2f4646c)
---
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] <support@github.com>
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](pnpm/action-setup@fe02b34...41ff726)
Updates `slackapi/slack-github-action` from 2.0.0 to 2.1.1
- [Release notes](https://github.com/slackapi/slack-github-action/releases)
- [Commits](slackapi/slack-github-action@485a9d4...91efab1)
---
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] <support@github.com>
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 13af96b)
Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: pierrejeambrun <pierrejbrun@gmail.com>
* 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 a915216)
Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* [v3-1-test] Bump astroid>=4 (#63170) (#63174)
(cherry picked from commit 0a985ea)
Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
* 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/react@3.34.0/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@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] <support@github.com>
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 b528e50)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* 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 <kimyoungi99@naver.com>
* 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](github/codeql-action@ce28f5b...0d579ff)
---
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] <support@github.com>
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 9ae1875)
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
* [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 a1717a6 and carried forward into the
inlined copies in both Dockerfiles.
(cherry picked from commit 2ab6f94)
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* 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 7bc23ef)
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Dev-iL <6509619+Dev-iL@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Wei Lee <weilee.rx@gmail.com>
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 <128097794+kalluripradeep@users.noreply.github.com>
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
Co-authored-by: Bugra Ozturk <bugraoz93@users.noreply.github.com>
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
Co-authored-by: Vincent <97131062+vincbeck@users.noreply.github.com>
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
Co-authored-by: Young-Ki Kim <kimyoungi99@naver.com>
Co-authored-by: Subham <subhamsangwan26@gmail.com>
Ankurdeewan pushed a commit to Ankurdeewan/airflow that referenced this pull request Mar 15, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
vatsrahul1001 pushed a commit that referenced this pull request Mar 25, 2026
…#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 <noreply@anthropic.com>
vatsrahul1001 pushed a commit that referenced this pull request Mar 25, 2026
* 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 <noreply@anthropic.com>
* 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](dsherret/ts-morph@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] <support@github.com>
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 25e9284)
Co-authored-by: Pradeep Kalluri <128097794+kalluripradeep@users.noreply.github.com>
* [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 41969f4)
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* [v3-1-test] CI: Upgrade important CI environment (#62989) (#63005)
* [v3-1-test] CI: Upgrade important CI environment (#62989)
(cherry picked from commit 60b52b7)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* Fix rebase
---------
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* [v3-1-test] Align integration LocalStack docker-compose with e2e LocalStack config (#62980) (#62993)
(cherry picked from commit 6722c4b)
Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
* [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 fef2e62)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* 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 <95105677+jscheffl@users.noreply.github.com>
* 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](actions/setup-java@c5195ef...be666c2)
---
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] <support@github.com>
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](actions/stale@5bef64f...b5d41d4)
---
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] <support@github.com>
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](actions/checkout@11bd719...de0fac2)
---
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] <support@github.com>
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](actions/setup-python@a26af69...a309ff8)
---
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] <support@github.com>
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](actions/github-script@60a0d83...ed59741)
---
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] <support@github.com>
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 a2e3613)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
* 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/react@3.34.0/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@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] <support@github.com>
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](actions/upload-artifact@ea165f8...bbbca2d)
---
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] <support@github.com>
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](actions/setup-go@d35c59a...4b73464)
---
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] <support@github.com>
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](aws-actions/configure-aws-credentials@010d0da...8df5847)
---
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] <support@github.com>
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](actions/setup-node@49933ea...53b8394)
---
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] <support@github.com>
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](actions/setup-go@d35c59a...4b73464)
(cherry picked from commit 274c2b0)
---
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] <support@github.com>
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](actions/download-artifact@d3f86a1...70fc10c)
(cherry picked from commit 2f4646c)
---
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] <support@github.com>
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](pnpm/action-setup@fe02b34...41ff726)
Updates `slackapi/slack-github-action` from 2.0.0 to 2.1.1
- [Release notes](https://github.com/slackapi/slack-github-action/releases)
- [Commits](slackapi/slack-github-action@485a9d4...91efab1)
---
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] <support@github.com>
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 13af96b)
Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: pierrejeambrun <pierrejbrun@gmail.com>
* 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 a915216)
Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* [v3-1-test] Bump astroid>=4 (#63170) (#63174)
(cherry picked from commit 0a985ea)
Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
* 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/react@3.34.0/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@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] <support@github.com>
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 b528e50)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* 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 <kimyoungi99@naver.com>
* 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](github/codeql-action@ce28f5b...0d579ff)
---
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] <support@github.com>
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 9ae1875)
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
* [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 a1717a6 and carried forward into the
inlined copies in both Dockerfiles.
(cherry picked from commit 2ab6f94)
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* 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 7bc23ef)
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Dev-iL <6509619+Dev-iL@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Wei Lee <weilee.rx@gmail.com>
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 <128097794+kalluripradeep@users.noreply.github.com>
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
Co-authored-by: Bugra Ozturk <bugraoz93@users.noreply.github.com>
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
Co-authored-by: Vincent <97131062+vincbeck@users.noreply.github.com>
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
Co-authored-by: Young-Ki Kim <kimyoungi99@naver.com>
Co-authored-by: Subham <subhamsangwan26@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

all versionsIf set, the CI build will be forced to use all versions of Python/K8S/DBsarea:task-sdk

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Dev-iL@jscheffl@potiuk@eladkal
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Fix flaky test_reading_from_pipes on Python 3.13 with pytest-xdist by Dev-iL · Pull Request #59801 · apache/airflow · GitHub
Skip to content

Fix flaky test_reading_from_pipes on Python 3.13 with pytest-xdist - #59801

Merged
jscheffl merged 1 commit into
apache:mainfrom
Dev-iL:2512/fix_flaky_pipes
Dec 25, 2025
Merged

Fix flaky test_reading_from_pipes on Python 3.13 with pytest-xdist#59801
jscheffl merged 1 commit into
apache:mainfrom
Dev-iL:2512/fix_flaky_pipes

Conversation

@Dev-iL

@Dev-iLDev-iL commented Dec 25, 2025

Copy link
Copy Markdown
Collaborator

Summary

This PR fixes the flaky test_reading_from_pipes test on Python 3.13 with pytest-xdist through two complementary fixes.

Fix 1: Defensive improvements

These changes address the symptom pathway where inherited mocks in forked processes could trigger warnings:

  1. context.py: Changed hasattr() to getattr() to avoid triggering coroutine creation when checking for async methods on AsyncMock objects
  2. test_supervisor.py: Added use_real_secrets_backends fixture to ensure real backend instances are used in subprocess tests, preventing inheritance of mocked backends across fork boundaries
  3. supervisor.py: Fixed resource cleanup in _remote_logging_conn() with explicit del statements to prevent leaking client references
  4. client.py: Fixed lru_cache binding by calling via type(self) instead of self to avoid carrying stale cache state across forked processes

Fix 2: Root cause fix

The actual source of the unawaited coroutine was in test_runtime_error_triggers_greenback_fallback in test_secrets.py:

  1. The test mocked greenback.await_ to return a value directly without actually awaiting anything
  2. When backend.get_connection() executed greenback.await_(self.aget_connection(conn_id)), a real coroutine was created
  3. The mocked greenback.await_ returned immediately without awaiting that coroutine
  4. When the orphaned coroutine was garbage collected, Python 3.13 raised RuntimeWarning: coroutine 'ExecutionAPISecretsBackend.aget_connection' was never awaited
  5. When tests ran in parallel with pytest-xdist, this warning appeared in captured_logs of other tests, causing assertion failures

The fix: Modified the test to mock greenback.await_ with a side_effect that actually awaits the coroutine, and mock aget_connection to return the expected connection directly.

Both fixes together make the codebase more robust against async-related test flakiness on Python 3.13.


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@jscheffljscheffl added the all versions If set, the CI build will be forced to use all versions of Python/K8S/DBs label Dec 25, 2025
@jscheffl

Copy link
Copy Markdown
Contributor

Close and re-open to force a new CI run...

@jscheffljscheffl reopened this Dec 25, 2025
@Dev-iL
Dev-iLforce-pushed the 2512/fix_flaky_pipes branch from f09dd76 to 053f3bdCompareDecember 25, 2025 09:59
@jscheffl
jscheffl self-requested a review December 25, 2025 10:14
@potiuk

Copy link
Copy Markdown
Member

Hmm. Mypy failed

@Dev-iL
Dev-iLforce-pushed the 2512/fix_flaky_pipes branch from 053f3bd to 321fbb8CompareDecember 25, 2025 11:08
@Dev-iL

Dev-iL commented Dec 25, 2025

Copy link
Copy Markdown
CollaboratorAuthor

I did some more local testing, There was another flaky test in there. Let's hope it's fine now.

Please note that the AI introduced additional changes since your approval.

The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
@Dev-iL
Dev-iLforce-pushed the 2512/fix_flaky_pipes branch from 321fbb8 to 763d21bCompareDecember 25, 2025 11:50
@jscheffl
jscheffl merged commit 3428dc9 into apache:mainDec 25, 2025
154 checks passed
amoghrajesh pushed a commit to astronomer/airflow that referenced this pull request Dec 29, 2025
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Jan 2, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
stegololz pushed a commit to stegololz/airflow that referenced this pull request Jan 9, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
jhgoebbert pushed a commit to jhgoebbert/airflow_Owen-CH-Leung that referenced this pull request Feb 8, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Mar 4, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
@github-actions

Copy link
Copy Markdown
Contributor

Backport failed to create: v3-1-test. View the failure log Run details

Note: As of Merging PRs targeted for Airflow 3.X
the committer who merges the PR is responsible for backporting the PRs that are bug fixes (generally speaking) to the maintenance branches.

In matter of doubt please ask in #release-management Slack channel.

StatusBranchResult
v3-1-testCommit Link

You can attempt to backport this manually by running:

cherry_picker 3428dc9 v3-1-test

This should apply the commit to the v3-1-test branch and leave the commit in conflict state marking
the files that need manual conflict resolution.

After you have resolved the conflicts, you can continue the backport process by running:

cherry_picker --continue

If you don't have cherry-picker installed, see the installation guide.

@eladkaleladkal added this to the Airflow 3.1.9 milestone Mar 6, 2026
Dev-iL added a commit to Dev-iL/airflow that referenced this pull request Mar 6, 2026
…pache#59801)
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 <noreply@anthropic.com>
eladkal pushed a commit that referenced this pull request Mar 6, 2026
…#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 <noreply@anthropic.com>
vatsrahul1001 pushed a commit that referenced this pull request Mar 10, 2026
…#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 <noreply@anthropic.com>
pierrejeambrun added a commit that referenced this pull request Mar 10, 2026
* 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 <noreply@anthropic.com>
* 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](dsherret/ts-morph@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] <support@github.com>
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 25e9284)
Co-authored-by: Pradeep Kalluri <128097794+kalluripradeep@users.noreply.github.com>
* [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 41969f4)
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* [v3-1-test] CI: Upgrade important CI environment (#62989) (#63005)
* [v3-1-test] CI: Upgrade important CI environment (#62989)
(cherry picked from commit 60b52b7)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* Fix rebase
---------
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* [v3-1-test] Align integration LocalStack docker-compose with e2e LocalStack config (#62980) (#62993)
(cherry picked from commit 6722c4b)
Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
* [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 fef2e62)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* 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 <95105677+jscheffl@users.noreply.github.com>
* 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](actions/setup-java@c5195ef...be666c2)
---
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] <support@github.com>
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](actions/stale@5bef64f...b5d41d4)
---
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] <support@github.com>
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](actions/checkout@11bd719...de0fac2)
---
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] <support@github.com>
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](actions/setup-python@a26af69...a309ff8)
---
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] <support@github.com>
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](actions/github-script@60a0d83...ed59741)
---
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] <support@github.com>
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 a2e3613)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
* 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/react@3.34.0/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@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] <support@github.com>
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](actions/upload-artifact@ea165f8...bbbca2d)
---
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] <support@github.com>
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](actions/setup-go@d35c59a...4b73464)
---
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] <support@github.com>
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](aws-actions/configure-aws-credentials@010d0da...8df5847)
---
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] <support@github.com>
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](actions/setup-node@49933ea...53b8394)
---
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] <support@github.com>
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](actions/setup-go@d35c59a...4b73464)
(cherry picked from commit 274c2b0)
---
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] <support@github.com>
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](actions/download-artifact@d3f86a1...70fc10c)
(cherry picked from commit 2f4646c)
---
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] <support@github.com>
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](pnpm/action-setup@fe02b34...41ff726)
Updates `slackapi/slack-github-action` from 2.0.0 to 2.1.1
- [Release notes](https://github.com/slackapi/slack-github-action/releases)
- [Commits](slackapi/slack-github-action@485a9d4...91efab1)
---
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] <support@github.com>
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 13af96b)
Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: pierrejeambrun <pierrejbrun@gmail.com>
* 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 a915216)
Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* [v3-1-test] Bump astroid>=4 (#63170) (#63174)
(cherry picked from commit 0a985ea)
Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
* 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/react@3.34.0/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@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] <support@github.com>
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 b528e50)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* 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 <kimyoungi99@naver.com>
* 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](github/codeql-action@ce28f5b...0d579ff)
---
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] <support@github.com>
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 9ae1875)
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
* [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 a1717a6 and carried forward into the
inlined copies in both Dockerfiles.
(cherry picked from commit 2ab6f94)
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* 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 7bc23ef)
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Dev-iL <6509619+Dev-iL@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Wei Lee <weilee.rx@gmail.com>
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 <128097794+kalluripradeep@users.noreply.github.com>
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
Co-authored-by: Bugra Ozturk <bugraoz93@users.noreply.github.com>
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
Co-authored-by: Vincent <97131062+vincbeck@users.noreply.github.com>
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
Co-authored-by: Young-Ki Kim <kimyoungi99@naver.com>
Co-authored-by: Subham <subhamsangwan26@gmail.com>
Ankurdeewan pushed a commit to Ankurdeewan/airflow that referenced this pull request Mar 15, 2026
…pache#59801)
The test was failing intermittently because forked subprocesses could inherit mocked secrets backends from parallel tests. When hasattr() checks async methods on AsyncMock (Python 3.13), it creates unawaited coroutines, triggering RuntimeWarning.
vatsrahul1001 pushed a commit that referenced this pull request Mar 25, 2026
…#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 <noreply@anthropic.com>
vatsrahul1001 pushed a commit that referenced this pull request Mar 25, 2026
* 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 <noreply@anthropic.com>
* 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](dsherret/ts-morph@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] <support@github.com>
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 25e9284)
Co-authored-by: Pradeep Kalluri <128097794+kalluripradeep@users.noreply.github.com>
* [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 41969f4)
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* [v3-1-test] CI: Upgrade important CI environment (#62989) (#63005)
* [v3-1-test] CI: Upgrade important CI environment (#62989)
(cherry picked from commit 60b52b7)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* Fix rebase
---------
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* [v3-1-test] Align integration LocalStack docker-compose with e2e LocalStack config (#62980) (#62993)
(cherry picked from commit 6722c4b)
Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
* [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 fef2e62)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* 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 <95105677+jscheffl@users.noreply.github.com>
* 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](actions/setup-java@c5195ef...be666c2)
---
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] <support@github.com>
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](actions/stale@5bef64f...b5d41d4)
---
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] <support@github.com>
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](actions/checkout@11bd719...de0fac2)
---
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] <support@github.com>
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](actions/setup-python@a26af69...a309ff8)
---
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] <support@github.com>
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](actions/github-script@60a0d83...ed59741)
---
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] <support@github.com>
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 a2e3613)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
* 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/react@3.34.0/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@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] <support@github.com>
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](actions/upload-artifact@ea165f8...bbbca2d)
---
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] <support@github.com>
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](actions/setup-go@d35c59a...4b73464)
---
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] <support@github.com>
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](aws-actions/configure-aws-credentials@010d0da...8df5847)
---
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] <support@github.com>
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](actions/setup-node@49933ea...53b8394)
---
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] <support@github.com>
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](actions/setup-go@d35c59a...4b73464)
(cherry picked from commit 274c2b0)
---
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] <support@github.com>
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](actions/download-artifact@d3f86a1...70fc10c)
(cherry picked from commit 2f4646c)
---
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] <support@github.com>
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](pnpm/action-setup@fe02b34...41ff726)
Updates `slackapi/slack-github-action` from 2.0.0 to 2.1.1
- [Release notes](https://github.com/slackapi/slack-github-action/releases)
- [Commits](slackapi/slack-github-action@485a9d4...91efab1)
---
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] <support@github.com>
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 13af96b)
Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: pierrejeambrun <pierrejbrun@gmail.com>
* 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 a915216)
Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* [v3-1-test] Bump astroid>=4 (#63170) (#63174)
(cherry picked from commit 0a985ea)
Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
* 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/react@3.34.0/packages/react)
Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@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] <support@github.com>
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 b528e50)
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* 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 <kimyoungi99@naver.com>
* 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](github/codeql-action@ce28f5b...0d579ff)
---
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] <support@github.com>
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 9ae1875)
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
* [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 a1717a6 and carried forward into the
inlined copies in both Dockerfiles.
(cherry picked from commit 2ab6f94)
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* 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 7bc23ef)
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Dev-iL <6509619+Dev-iL@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Wei Lee <weilee.rx@gmail.com>
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 <128097794+kalluripradeep@users.noreply.github.com>
Co-authored-by: Xiaodong DENG <xddeng@apache.org>
Co-authored-by: Bugra Ozturk <bugraoz93@users.noreply.github.com>
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
Co-authored-by: Vincent <97131062+vincbeck@users.noreply.github.com>
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
Co-authored-by: Young-Ki Kim <kimyoungi99@naver.com>
Co-authored-by: Subham <subhamsangwan26@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

all versionsIf set, the CI build will be forced to use all versions of Python/K8S/DBsarea:task-sdk

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Dev-iL@jscheffl@potiuk@eladkal