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

Reply via email to