This is an automated email from the ASF dual-hosted git repository.
kaxilnaik pushed a commit to branch v3-1-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/v3-1-test by this push:
new fa55206c987 Update 3.1.0 release notes based on latest cherry-picks
fa55206c987 is described below
commit fa55206c987740a15c653ef3d8b0d1b195df9114
Author: Kaxil Naik <[email protected]>
AuthorDate: Tue Sep 16 20:08:09 2025 +0100
Update 3.1.0 release notes based on latest cherry-picks
---
RELEASE_NOTES.rst | 64 ++++++++++++++++++++++--
airflow-core/newsfragments/49779.significant.rst | 20 --------
airflow-core/newsfragments/52651.significant.rst | 53 --------------------
airflow-core/newsfragments/53727.feature.rst | 1 -
airflow-core/newsfragments/55508.feature.rst | 1 -
airflow-core/newsfragments/55707.significant.rst | 23 ---------
reproducible_build.yaml | 4 +-
7 files changed, 63 insertions(+), 103 deletions(-)
diff --git a/RELEASE_NOTES.rst b/RELEASE_NOTES.rst
index c2c375242e6..98de15bce75 100644
--- a/RELEASE_NOTES.rst
+++ b/RELEASE_NOTES.rst
@@ -190,6 +190,64 @@ Python 3.13 support added & 3.9 support removed
Support for Python 3.9 has been removed, as it has reached end-of-life.
Airflow 3.1.0 requires Python 3.10, 3.11, 3.12 or 3.13.
+Reduce default API server workers to 1
+""""""""""""""""""""""""""""""""""""""
+
+The default number of API server workers (``[api] workers``) has been reduced
from ``4`` to ``1``.
+
+With FastAPI, sync code runs in external thread pools, making multiple workers
within a single
+process less necessary. Additionally, with uvicorn's spawn behavior instead of
fork, there is
+no shared copy-on-write memory between workers, so horizontal scaling with
multiple API server
+instances is now the recommended approach for better resource utilization and
fault isolation.
+
+A good starting point for the number of workers is to set it to the number of
CPU cores available.
+If you do have multiple CPU cores available for the API server, consider
deploying multiple API
+server instances instead of increasing the number of workers.
+
+Airflow now uses `structlog <https://www.structlog.org/en/stable/>`_ everywhere
+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+
+Most users should not notice the difference, but it is now possible to emit
structured log key/value pairs from tasks.
+
+If your class subclasses ``LoggingMixin`` (which all ``BaseHook`` and
``BaseOperator`` do -- i.e. all hooks and
+operators) then ``self.log`` is now a `<structlog logger>`_.
+
+The advantage of using structured logging is that it is much easier to find
specific information about log
+message, especially when using a central store such as
``OpenSearch``/``Elastic``/``Splunk`` etc.
+You don't have to make any changes, but you can now take advantage of this.
+
+.. code-block:: python
+
+ # Inside a Task/Hook etc.
+
+ # Before:
+ # self.log.info("Registering adapter %r", item.name)
+ # Now:
+ self.log.info("Registering adapter", name=item.name)
+
+This will produce a log that (in the UI) will look something like this::
+
+ [2025-09-16 10:36:13] INFO - Registering adapter name="adapter1"
+
+or in JSON (i.e. the log files on disk)::
+
+ {"timestamp": "2025-09-16T10:36:13Z", "log_level": "info", "event":
"Registering adapter", "name": "adapter1"}
+
+You can also use ``structlog`` loggers at the top level of modules etc, and
``stdlib`` both continue to work:
+
+.. code-block:: python
+
+ import logging
+ import structlog
+
+ log1 = logging.getLogger(__name__)
+ log2 = strcutlog.get_logger(__name__)
+
+ log1.info("Loading something from %s", __name__)
+ log2.info("Loading something", source=__name__)
+
+(You can't add arbitrary key/value pairs to ``stdlib``, but the normal
``percent-formatter`` approaches still work fine.)
+
New Features
^^^^^^^^^^^^
@@ -226,7 +284,7 @@ New Features
- Implement deadline alert system for proactive DAG monitoring (AIP-86)
(#53951, #53903, #53201, #55086)
- Add configurable reference points and notification callbacks (#50677, #50093)
- Add deadline calculation and tracking in DAG execution lifecycle (#51638,
#50925)
-- Add comprehensive UI translation support for 14 languages (#51266, #51038,
#51219, #50929, #50981, #51793)
+- Add comprehensive UI translation support for 16 languages (#51266, #51038,
#51219, #50929, #50981, #51793 and more)
- Add right-to-left (RTL) layout support for Arabic and Hebrew (#51376)
- Add language selection interface and browser preference detection (#51369)
- Add translation completeness validation and automated checks (#51166, #51131)
@@ -342,7 +400,7 @@ Bug Fixes
- Fix incorrect log timestamps in UI when ``default_timezone`` is not UTC
(#54431)
- Fix handling of priority_weight for DAG processor callbacks (#55436)
- Fix pointless requests from Gantt view when there is no Run ID (#55668)
-- Ensure filename and lineno of logger calls are present in Task Logs (#55581)
+- Ensure filename and ``lineno`` of logger calls are present in Task Logs
(#55581)
Miscellaneous
^^^^^^^^^^^^^
@@ -382,7 +440,7 @@ Doc Only Changes
- Make term Dag consistent in docs task-sdk (#55100)
- Add DAG bundles triggerer limitation documentation (#55232)
- Add deadline alerts usage guides and best practices (#53727)
-- Remove ``--preview `` flag from ``ruff check`` instructions for Airflow 3
upgrade path (#55516)
+- Remove ``--preview`` flag from ``ruff check`` instructions for Airflow 3
upgrade path (#55516)
- Add documentation for context parameter (#55377)
Airflow 3.0.6 (2025-08-29)
diff --git a/airflow-core/newsfragments/49779.significant.rst
b/airflow-core/newsfragments/49779.significant.rst
deleted file mode 100644
index 187f6ac1991..00000000000
--- a/airflow-core/newsfragments/49779.significant.rst
+++ /dev/null
@@ -1,20 +0,0 @@
-SecretCache class has been moved to ``airflow.sdk.execution_time.cache`` from
``airflow.secrets.cache``
-
-* Types of change
-
- * [ ] Dag changes
- * [ ] Config changes
- * [ ] API changes
- * [ ] CLI changes
- * [ ] Behaviour changes
- * [ ] Plugin changes
- * [ ] Dependency changes
- * [x] Code interface changes
-
-* Migration rules needed
-
- * ruff
-
- * AIR301
-
- * [ ] ``airflow.secrets.cache.SecretCache`` →
``airflow.sdk.execution_time.cache.SecretCache``
diff --git a/airflow-core/newsfragments/52651.significant.rst
b/airflow-core/newsfragments/52651.significant.rst
deleted file mode 100644
index d71834af938..00000000000
--- a/airflow-core/newsfragments/52651.significant.rst
+++ /dev/null
@@ -1,53 +0,0 @@
-Airflow now uses `https://www.structlog.org/en/stable/ <structlog>`_
everywhere.
-
-Most users should not notice the difference, but it is now possible to emit
structured log key/value pairs from tasks.
-
-If your class subclasses LoggingMixin (which all BaseHook and BaseOperator do
-- i.e. all hooks and operators) then ``self.log`` is now a ` <structlog
logger>`_.
-
-The advantage of using structured logging is that it is much easier to find
specific information about log message, especially when using a central store
such as OpenSearch/Elastic/Splunk etc. You don't have to make any changes, but
you can now take advantage of this.
-
-.. code-block:: python
-
- # Inside a Task/Hook etc.
-
- # Before:
- # self.log.info("Registering adapter %r", item.name)
- # Now:
- self.log.info("Registering adapter", name=item.name)
-
-This will produce a log that (in the UI) will look something like this::
-
- [2025-09-16 10:36:13] INFO - Registering adapter name="adapter1"
-
-
-or in JSON (i.e. the log files on disk)::
-
- {"timestamp": "2025-09-16T10:36:13Z", "log_level": "info", "event":
"Registering adapter", "name": "adapter1"}
-
-
-You can also use structlog loggers at the top level of modules etc, and stdlib
both continue to work:
-
-.. code-block:: python
-
- import logging
- import structlog
-
- log1 = logging.getLogger(__name__)
- log2 = strcutlog.get_logger(__name__)
-
- log1.info("Loading something from %s", __name__)
- log2.info("Loading something", source=__name__)
-
-(You can't add arbitrary key/value pairs to stdlib, but the normal
percent-formatter approaches still work fine.)
-
-
-* Types of change
-
- * [ ] Dag changes
- * [ ] Config changes
- * [x] API changes
- * [ ] CLI changes
- * [ ] Behaviour changes
- * [ ] Plugin changes
- * [ ] Dependency changes
- * [ ] Code interface changes
diff --git a/airflow-core/newsfragments/53727.feature.rst
b/airflow-core/newsfragments/53727.feature.rst
deleted file mode 100644
index 90272000d1d..00000000000
--- a/airflow-core/newsfragments/53727.feature.rst
+++ /dev/null
@@ -1 +0,0 @@
-Add Airflow Deadlines feature in Airflow 3.1. See
https://airflow.apache.org/docs/apache-airflow/stable/howto/deadline-alerts.html.
diff --git a/airflow-core/newsfragments/55508.feature.rst
b/airflow-core/newsfragments/55508.feature.rst
deleted file mode 100644
index 47285553ba2..00000000000
--- a/airflow-core/newsfragments/55508.feature.rst
+++ /dev/null
@@ -1 +0,0 @@
-Output on stdout/stderr from within tasks is now filterable in the Sources
list in the UI log view
diff --git a/airflow-core/newsfragments/55707.significant.rst
b/airflow-core/newsfragments/55707.significant.rst
deleted file mode 100644
index 07a42ba3b93..00000000000
--- a/airflow-core/newsfragments/55707.significant.rst
+++ /dev/null
@@ -1,23 +0,0 @@
-Reduce default API server workers to 1
-
-The default number of API server workers (``[api] workers``) has been reduced
from 4 to 1.
-
-With FastAPI, sync code runs in external thread pools, making multiple workers
within a single
-process less necessary. Additionally, with uvicorn's spawn behavior instead of
fork, there is
-no shared copy-on-write memory between workers, so horizontal scaling with
multiple API server
-instances is now the recommended approach for better resource utilization and
fault isolation.
-
-A good starting point for the number of workers is to set it to the number of
CPU cores available.
-If you do have multiple CPU cores available for the API server, consider
deploying multiple API
-server instances instead of increasing the number of workers.
-
-* Types of change
-
- * [ ] Dag changes
- * [x] Config changes
- * [ ] API changes
- * [ ] CLI changes
- * [ ] Behaviour changes
- * [ ] Plugin changes
- * [ ] Dependency changes
- * [ ] Code interface changes
diff --git a/reproducible_build.yaml b/reproducible_build.yaml
index 7226a3bc1ae..2ad6587f047 100644
--- a/reproducible_build.yaml
+++ b/reproducible_build.yaml
@@ -1,2 +1,2 @@
-release-notes-hash: 231c1dea9192040721d8048592300cac
-source-date-epoch: 1757972431
+release-notes-hash: fe1dbdce18625a63924499f839e5852f
+source-date-epoch: 1758049687