This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch v2-11-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/v2-11-test by this push:
new acf6e99bb99 Add release notes for Airflow 2.11.1
acf6e99bb99 is described below
commit acf6e99bb9934e14b61fa17b2cf2739ae0059bfd
Author: Jarek Potiuk <[email protected]>
AuthorDate: Sat Feb 14 20:19:06 2026 +0100
Add release notes for Airflow 2.11.1
---
README.md | 4 +-
RELEASE_NOTES.rst | 84 +++++++++++++++++++++++++++++++++++++
airflow/reproducible_build.yaml | 4 +-
generated/PYPI_README.md | 4 +-
newsfragments/39908.significant.rst | 11 -----
newsfragments/48568.significant.rst | 1 -
newsfragments/61598.significant.rst | 14 -------
newsfragments/61880.significant.rst | 17 --------
8 files changed, 90 insertions(+), 49 deletions(-)
diff --git a/README.md b/README.md
index 557178a2d4a..7fe159189c5 100644
--- a/README.md
+++ b/README.md
@@ -97,9 +97,9 @@ Airflow is not a streaming solution, but it is often used to
process real-time d
Apache Airflow is tested with:
-| | Main version (dev) | Stable version (2.11.0) |
+| | Main version (dev) | Stable version (2.11.1) |
|------------|------------------------------|------------------------------|
-| Python | 3.9, 3.10, 3.11, 3.12 | 3.9, 3.10, 3.11, 3.12 |
+| Python | 3.9, 3.10, 3.11, 3.12 | 3.10, 3.11, 3.12 |
| Platform | AMD64/ARM64(\*) | AMD64/ARM64(\*) |
| Kubernetes | 1.26, 1.27, 1.28, 1.29, 1.30 | 1.26, 1.27, 1.28, 1.29, 1.30 |
| PostgreSQL | 12, 13, 14, 15, 16 | 12, 13, 14, 15, 16 |
diff --git a/RELEASE_NOTES.rst b/RELEASE_NOTES.rst
index 1dedc6a5a92..370b2811f22 100644
--- a/RELEASE_NOTES.rst
+++ b/RELEASE_NOTES.rst
@@ -21,6 +21,90 @@
.. towncrier release notes start
+Airflow 2.11.1 (2026-02-14)
+---------------------------
+
+Significant Changes
+^^^^^^^^^^^^^^^^^^^
+
+Python 3.8 support removed
+""""""""""""""""""""""""""
+
+Support for Python 3.8 has been removed, as it has reached end-of-life.
+Airflow 2.11 requires Python 3.10, 3.11, or 3.12.
+
+Publishing timer and timing metrics in seconds is now deprecated
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+
+In Airflow 3.0, the ``timer_unit_consistency`` setting in the ``metrics``
section will be
+enabled by default and setting itself will be removed. This will standardize
all timer and timing metrics to
+milliseconds across all metric loggers.
+
+**Users Integrating with Datadog, OpenTelemetry, or other metric backends**
should enable this setting. For users, using
+``statsd``, this change will not affect you.
+
+If you need backward compatibility, you can leave this setting disabled
temporarily, but enabling
+``timer_unit_consistency`` is encouraged to future-proof your metrics setup.
(#39908)
+
+The ``core.worker_precheck`` config option is not effective any more
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+
+Celery provider uses ``celery.worker_precheck`` config option in celery
provider < 3.5.0
+and as of 3.5.0 it is not used at all. (#48568)
+
+Retrieving historical log templates is disabled in Airflow 2.11.1
+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+
+When you change the log template in Airflow 2.11.1, the historical log
templates are not retrieved.
+This means that if you have existing logs that were generated using a
different log template,
+they will not be accessible using the new log template.
+
+This change is due to potential security issues that could arise from
retrieving historical log templates,
+which allow Dag Authors to execute arbitrary code in webserver when retrieving
logs.
+By disabling the retrieval of historical log templates, Airflow 2.11.1 aims to
enhance the security of the
+system and prevent potential vulnerabilities in case the potential of
executing arbitrary code in webserver
+is important for Airflow deployment.
+
+Users who need to access historical logs generated with a different log
template will need to manually
+update their log files to match the naming of their historical log files with
the latest log template
+configured in Airflow configuration, or they can set the
"core.use_historical_filename_templates"
+configuration option to True to enable the retrieval of historical log
templates, if they are fine with
+the Dag Authors being able to execute arbitrary code in webserver when
retrieving logs. (#61880)
+
+Updated dependencies
+""""""""""""""""""""
+
+Airflow 2.11.1 includes updates to a number of dependencies including
connexion, Flask-Session, Werkzeug,
+that were not possible to upgrade before, because the dependencies did not
have compatible versions
+with Airflow 2.11.0, but we worked together with the community to update them.
Many thanks to connexion
+team and a number of community members to help with the updates so that we
could upgrade to newer
+versions and get rid of some dependency versions that had known security
vulnerabilities (#51681)
+
+Bug fixes
+"""""""""
+
+- Add proxy values to be masked by secrets manager (#61906)
+- Masking details while creating connections using json & uri (#61882)
+- Fix redaction of illegal args (#61883)
+- Fix stuck queued tasks by calling executor fail method and invoking failure
callbacks (#53038)
+- Fix recursion depth error in _redact_exception_with_context (#61797)
+- Avoid warning when passing none as dataset alias (#61791)
+- Add pool name validation to avoid XSS from the DAG file (#61732)
+- Prevent scheduler to crash due to RecursionError when making a SQL query
(#55778)
+- Fix root logger level cache invalidation in LoggerMutationHelper (#61644)
+- update null event values to empty string in downgrade for migration
revision_id d75389605139 (#57131)
+- Fix WeightRule spec (#53947)
+- Correctly treat request on reschedule sensors as resetting after each
reschedule (#51410) (#52638)
+- Allow more empty loops before stopping log streaming (#52614) (#52636)
+- Ensuring XCom return value can be mapped for dynamically-mapped
@task_group's (#51668)
+- Fix archival for cascading deletes by archiving dependent tables first
(#51952) (#52211)
+- Stop streaming task logs if end of log mark is missing (#51904)
+- Fix bad width w/no options in multi-select DAG parameter (#51516)
+- Fix remove filter button visibility in Pools list page (#51161)
+- Fix delete button visibility in search filters (#51100)
+- Fix migration from 2.2.0 to 2.11.0 for Sqlite (#50745)
+- Check if stand alone dag processor is active in get_health endpoint (#48612)
+
Airflow 2.11.0 (2025-05-20)
---------------------------
diff --git a/airflow/reproducible_build.yaml b/airflow/reproducible_build.yaml
index 31793bfcd74..7248aece609 100644
--- a/airflow/reproducible_build.yaml
+++ b/airflow/reproducible_build.yaml
@@ -1,2 +1,2 @@
-release-notes-hash: 90471d3817ea140bbdfd8fcb96c19a2a
-source-date-epoch: 1764003839
+release-notes-hash: 149bd98c7837d0722f7d2191bb6e1809
+source-date-epoch: 1771096725
diff --git a/generated/PYPI_README.md b/generated/PYPI_README.md
index 222f125b061..1ac6fb1a8d8 100644
--- a/generated/PYPI_README.md
+++ b/generated/PYPI_README.md
@@ -54,9 +54,9 @@ Use Airflow to author workflows as directed acyclic graphs
(DAGs) of tasks. The
Apache Airflow is tested with:
-| | Main version (dev) | Stable version (2.11.0) |
+| | Main version (dev) | Stable version (2.11.1) |
|------------|------------------------------|------------------------------|
-| Python | 3.9, 3.10, 3.11, 3.12 | 3.9, 3.10, 3.11, 3.12 |
+| Python | 3.9, 3.10, 3.11, 3.12 | 3.10, 3.11, 3.12 |
| Platform | AMD64/ARM64(\*) | AMD64/ARM64(\*) |
| Kubernetes | 1.26, 1.27, 1.28, 1.29, 1.30 | 1.26, 1.27, 1.28, 1.29, 1.30 |
| PostgreSQL | 12, 13, 14, 15, 16 | 12, 13, 14, 15, 16 |
diff --git a/newsfragments/39908.significant.rst
b/newsfragments/39908.significant.rst
deleted file mode 100644
index d5ba99fa9fa..00000000000
--- a/newsfragments/39908.significant.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-Publishing timer and timing metrics in seconds is now deprecated.
-
-In Airflow 3.0, the ``timer_unit_consistency`` setting in the ``metrics``
section will be
-enabled by default and setting itself will be removed. This will standardize
all timer and timing metrics to
-milliseconds across all metric loggers.
-
-**Users Integrating with Datadog, OpenTelemetry, or other metric backends**
should enable this setting. For users, using
-``statsd``, this change will not affect you.
-
-If you need backward compatibility, you can leave this setting disabled
temporarily, but enabling
-``timer_unit_consistency`` is encouraged to future-proof your metrics setup.
diff --git a/newsfragments/48568.significant.rst
b/newsfragments/48568.significant.rst
deleted file mode 100644
index 3d5760a6c8a..00000000000
--- a/newsfragments/48568.significant.rst
+++ /dev/null
@@ -1 +0,0 @@
-The ``core.worker_precheck`` config option is not effective any more. Celery
provider uses ``celery.worker_precheck`` config option in celery provider <
3.5.0 and as of 3.5.0 it is not used at all.
diff --git a/newsfragments/61598.significant.rst
b/newsfragments/61598.significant.rst
deleted file mode 100644
index 5c22de5fb4d..00000000000
--- a/newsfragments/61598.significant.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-Airflow 2.11.1 will drop support for Python 3.9 and require Python 3.10 or
later.
-
-The main point behind upgrading Python version to 3.10 is that
-Python 3.9 is officially end-of-life and many of the dependencies
-had already stopped releasing even security fixes for 3.9.
-
-Since the upcoming 2.11.1 version is mainly a security-focused
-release, we decided to drop support for Python 3.9 in order to
-be able to upgrade all related dependencies to latest security
-patch versions. There are absolutely minimal changes in behaviour
-between Python 3.9 and 3.10 and we have not experienced virtually
-any problems because of this - other than dependency issues, so
-it should be very minimal overhead for anyone to upgrade to
-Python 3.10 even if they used Python 3.9.
diff --git a/newsfragments/61880.significant.rst
b/newsfragments/61880.significant.rst
deleted file mode 100644
index d00105206c4..00000000000
--- a/newsfragments/61880.significant.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-Retrieving historical log templates is disabled in Airflow 2.11.1
-
-When you change the log template in Airflow 2.11.1, the historical log
templates are not retrieved.
-This means that if you have existing logs that were generated using a
different log template,
-they will not be accessible using the new log template.
-
-This change is due to potential security issues that could arise from
retrieving historical log templates,
-which allow Dag Authors to execute arbitrary code in webserver when retrieving
logs.
-By disabling the retrieval of historical log templates, Airflow 2.11.1 aims to
enhance the security of the
-system and prevent potential vulnerabilities in case the potential of
executing arbitrary code in webserver
-is important for Airflow deployment.
-
-Users who need to access historical logs generated with a different log
template will need to manually
-update their log files to match the naming of their historical log files with
the latest log template
-configured in Airflow configuration, or they can set the
"core.use_historical_filename_templates"
-configuration option to True to enable the retrieval of historical log
templates, if they are fine with
-the Dag Authors being able to execute arbitrary code in webserver when
retrieving logs.