Airflow 2.9.1 has been released (#39431)

* Update RELEASE_NOTES.rst

(cherry picked from commit e20393546984a8948227ce3f926956e108d83e4b)

* Fix reproducible build hash

(cherry picked from commit fe7dd318363f6ad0ebca0211c77e3cc5119aa128)

* Update RELEASE_NOTES.rst

Co-authored-by: Kalle Ahlström <71292737+kahlstrm@users.noreply.github.com>
(cherry picked from commit 5356cb9f9b989ff48e1f963c19f088b80acb4c2c)

* Update RELEASE_NOTES.rst

(cherry picked from commit 2d53c1089f78d8d1416f51af60e1e0354781c661)

* Airflow 2.9.1 has been released

---------

Co-authored-by: Jed Cunningham <66968678+jedcunningham@users.noreply.github.com>
diff --git a/.github/ISSUE_TEMPLATE/airflow_bug_report.yml b/.github/ISSUE_TEMPLATE/airflow_bug_report.yml
index 47e3793..a291870 100644
--- a/.github/ISSUE_TEMPLATE/airflow_bug_report.yml
+++ b/.github/ISSUE_TEMPLATE/airflow_bug_report.yml
@@ -25,7 +25,7 @@
         the latest release or main to see if the issue is fixed before reporting it.
       multiple: false
       options:
-        - "2.9.0"
+        - "2.9.1"
         - "main (development)"
         - "Other Airflow 2 version (please specify below)"
     validations:
diff --git a/Dockerfile b/Dockerfile
index dcafa5e..81fc69a 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -45,7 +45,7 @@
 ARG AIRFLOW_USER_HOME_DIR=/home/airflow
 
 # latest released version here
-ARG AIRFLOW_VERSION="2.9.0"
+ARG AIRFLOW_VERSION="2.9.1"
 
 ARG PYTHON_BASE_IMAGE="python:3.8-slim-bookworm"
 
diff --git a/README.md b/README.md
index 25c8bff..5bf6034 100644
--- a/README.md
+++ b/README.md
@@ -98,7 +98,7 @@
 
 Apache Airflow is tested with:
 
-|             | Main version (dev)         | Stable version (2.9.0)      |
+|             | Main version (dev)         | Stable version (2.9.1)      |
 |-------------|----------------------------|-----------------------------|
 | Python      | 3.8, 3.9, 3.10, 3.11, 3.12 | 3.8, 3.9, 3.10, 3.11, 3.12  |
 | Platform    | AMD64/ARM64(\*)            | AMD64/ARM64(\*)             |
@@ -125,7 +125,7 @@
 is used in the [Community managed DockerHub image](https://hub.docker.com/p/apache/airflow) is
 `Debian Bookworm`. We also have support for legacy ``Debian Bullseye`` base image if you want to build a
 custom image but it is deprecated and option to do it will be removed in the Dockerfile that
-will accompany Airflow 2.9.0 so you are advised to switch to ``Debian Bookworm`` for your custom images.
+will accompany Airflow 2.9.1 so you are advised to switch to ``Debian Bookworm`` for your custom images.
 
 <!-- END Requirements, please keep comment here to allow auto update of PyPI readme.md -->
 <!-- START Getting started, please keep comment here to allow auto update of PyPI readme.md -->
@@ -180,15 +180,15 @@
 
 
 ```bash
-pip install 'apache-airflow==2.9.0' \
- --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.9.0/constraints-3.8.txt"
+pip install 'apache-airflow==2.9.1' \
+ --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.9.1/constraints-3.8.txt"
 ```
 
 2. Installing with extras (i.e., postgres, google)
 
 ```bash
 pip install 'apache-airflow[postgres,google]==2.8.3' \
- --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.9.0/constraints-3.8.txt"
+ --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.9.1/constraints-3.8.txt"
 ```
 
 For information on installing provider packages, check
@@ -293,7 +293,7 @@
 
 | Version   | Current Patch/Minor   | State     | First Release   | Limited Support   | EOL/Terminated   |
 |-----------|-----------------------|-----------|-----------------|-------------------|------------------|
-| 2         | 2.9.0                 | Supported | Dec 17, 2020    | TBD               | TBD              |
+| 2         | 2.9.1                 | Supported | Dec 17, 2020    | TBD               | TBD              |
 | 1.10      | 1.10.15               | EOL       | Aug 27, 2018    | Dec 17, 2020      | June 17, 2021    |
 | 1.9       | 1.9.0                 | EOL       | Jan 03, 2018    | Aug 27, 2018      | Aug 27, 2018     |
 | 1.8       | 1.8.2                 | EOL       | Mar 19, 2017    | Jan 03, 2018      | Jan 03, 2018     |
diff --git a/RELEASE_NOTES.rst b/RELEASE_NOTES.rst
index 1f32391..e6f86c0 100644
--- a/RELEASE_NOTES.rst
+++ b/RELEASE_NOTES.rst
@@ -21,6 +21,77 @@
 
 .. towncrier release notes start
 
+Airflow 2.9.1 (2024-05-03)
+--------------------------
+
+Significant Changes
+^^^^^^^^^^^^^^^^^^^
+
+Stackdriver logging bugfix requires Google provider ``10.17.0`` or later (#38071)
+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+
+If you use Stackdriver logging, you must use Google provider version ``10.17.0`` or later. Airflow ``2.9.1`` now passes ``gcp_log_name`` to the ``StackdriverTaskHandler`` instead of ``name``, and this will fail on earlier provider versions.
+
+This fixes a bug where the log name configured in ``[logging] remove_base_log_folder`` was overridden when Airflow configured logging, resulting in task logs going to the wrong destination.
+
+
+
+Bug Fixes
+"""""""""
+- Make task log messages include run_id (#39280)
+- Copy menu_item ``href`` for nav bar (#39282)
+- Fix trigger kwarg encryption migration (#39246, #39361, #39374)
+- Add workaround for datetime-local input in ``firefox`` (#39261)
+- Add Grid button to Task Instance view (#39223)
+- Get served logs when remote or executor logs not available for non-running task try (#39177)
+- Fixed side effect of menu filtering causing disappearing menus (#39229)
+- Use grid view for Task Instance's ``log_url`` (#39183)
+- Improve task filtering ``UX`` (#39119)
+- Improve rendered_template ``ux`` in react dag page (#39122)
+- Graph view improvements (#38940)
+- Check that the dataset<>task exists before trying to render graph (#39069)
+- Hostname was "redacted", not "redact"; remove it when there is no context (#39037)
+- Check whether ``AUTH_ROLE_PUBLIC`` is set in ``check_authentication`` (#39012)
+- Move rendering of ``map_index_template`` so it renders for failed tasks as long as it was defined before the point of failure (#38902)
+- ``Undeprecate`` ``BaseXCom.get_one`` method for now (#38991)
+- Add ``inherit_cache`` attribute for ``CreateTableAs`` custom SA Clause (#38985)
+- Don't wait for DagRun lock in mini scheduler (#38914)
+- Fix calendar view with no DAG Run (#38964)
+- Changed the background color of external task in graph (#38969)
+- Fix dag run selection (#38941)
+- Fix ``SAWarning`` 'Coercing Subquery object into a select() for use in IN()' (#38926)
+- Fix implicit ``cartesian`` product in AirflowSecurityManagerV2 (#38913)
+- Fix problem that links in legacy log view can not be clicked (#38882)
+- Fix dag run link params (#38873)
+- Use async db calls in WorkflowTrigger (#38689)
+- Fix audit log events filter (#38719)
+- Use ``methodtools.lru_cache`` instead of ``functools.lru_cache`` in class methods (#37757)
+- Raise deprecated warning in ``airflow dags backfill`` only if ``-I`` / ``--ignore-first-depends-on-past`` provided (#38676)
+
+Miscellaneous
+"""""""""""""
+- ``TriggerDagRunOperator`` deprecate ``execution_date`` in favor of ``logical_date`` (#39285)
+- Force to use Airflow Deprecation warnings categories on ``@deprecated`` decorator (#39205)
+- Add warning about run/import Airflow under the Windows (#39196)
+- Update ``is_authorized_custom_view`` from auth manager to handle custom actions (#39167)
+- Add in Trove classifiers Python 3.12 support (#39004)
+- Use debug level for ``minischeduler`` skip (#38976)
+- Bump ``undici`` from ``5.28.3 to 5.28.4`` in ``/airflow/www`` (#38751)
+
+
+Doc Only Changes
+""""""""""""""""
+- Fix supported k8s version in docs (#39172)
+- Dynamic task mapping ``PythonOperator`` op_kwargs (#39242)
+- Add link to ``user`` and ``role`` commands (#39224)
+- Add ``k8s 1.29`` to supported version in docs (#39168)
+- Data aware scheduling docs edits (#38687)
+- Update ``DagBag`` class docstring to include all params (#38814)
+- Correcting an example taskflow example (#39015)
+- Remove decorator from rendering fields example (#38827)
+
+
+
 Airflow 2.9.0 (2024-04-08)
 --------------------------
 
diff --git a/airflow/reproducible_build.yaml b/airflow/reproducible_build.yaml
index c6683aa..a1fdf08 100644
--- a/airflow/reproducible_build.yaml
+++ b/airflow/reproducible_build.yaml
@@ -1,2 +1,2 @@
-release-notes-hash: aad86522e49984ce17db1b8647cfb54a
-source-date-epoch: 1714165337
+release-notes-hash: 9809f8d0a17cb29bb999a06b7a23c02b
+source-date-epoch: 1714668201
diff --git a/docs/apache-airflow/installation/supported-versions.rst b/docs/apache-airflow/installation/supported-versions.rst
index 200a9d1..4a86b77 100644
--- a/docs/apache-airflow/installation/supported-versions.rst
+++ b/docs/apache-airflow/installation/supported-versions.rst
@@ -29,7 +29,7 @@
 =========  =====================  =========  ===============  =================  ================
 Version    Current Patch/Minor    State      First Release    Limited Support    EOL/Terminated
 =========  =====================  =========  ===============  =================  ================
-2          2.9.0                  Supported  Dec 17, 2020     TBD                TBD
+2          2.9.1                  Supported  Dec 17, 2020     TBD                TBD
 1.10       1.10.15                EOL        Aug 27, 2018     Dec 17, 2020       June 17, 2021
 1.9        1.9.0                  EOL        Jan 03, 2018     Aug 27, 2018       Aug 27, 2018
 1.8        1.8.2                  EOL        Mar 19, 2017     Jan 03, 2018       Jan 03, 2018
diff --git a/generated/PYPI_README.md b/generated/PYPI_README.md
index 764a886..9cd680e 100644
--- a/generated/PYPI_README.md
+++ b/generated/PYPI_README.md
@@ -54,7 +54,7 @@
 
 Apache Airflow is tested with:
 
-|             | Main version (dev)         | Stable version (2.9.0)      |
+|             | Main version (dev)         | Stable version (2.9.1)      |
 |-------------|----------------------------|-----------------------------|
 | Python      | 3.8, 3.9, 3.10, 3.11, 3.12 | 3.8, 3.9, 3.10, 3.11, 3.12  |
 | Platform    | AMD64/ARM64(\*)            | AMD64/ARM64(\*)             |
@@ -81,7 +81,7 @@
 is used in the [Community managed DockerHub image](https://hub.docker.com/p/apache/airflow) is
 `Debian Bookworm`. We also have support for legacy ``Debian Bullseye`` base image if you want to build a
 custom image but it is deprecated and option to do it will be removed in the Dockerfile that
-will accompany Airflow 2.9.0 so you are advised to switch to ``Debian Bookworm`` for your custom images.
+will accompany Airflow 2.9.1 so you are advised to switch to ``Debian Bookworm`` for your custom images.
 
 ## Getting started
 
@@ -132,15 +132,15 @@
 
 
 ```bash
-pip install 'apache-airflow==2.9.0' \
- --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.9.0/constraints-3.8.txt"
+pip install 'apache-airflow==2.9.1' \
+ --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.9.1/constraints-3.8.txt"
 ```
 
 2. Installing with extras (i.e., postgres, google)
 
 ```bash
 pip install 'apache-airflow[postgres,google]==2.8.3' \
- --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.9.0/constraints-3.8.txt"
+ --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.9.1/constraints-3.8.txt"
 ```
 
 For information on installing provider packages, check
diff --git a/newsfragments/38071.significant.rst b/newsfragments/38071.significant.rst
deleted file mode 100644
index 6193de6..0000000
--- a/newsfragments/38071.significant.rst
+++ /dev/null
@@ -1,26 +0,0 @@
-Rename the ``name`` attribute of the StackdriverTaskHandler to ``gcp_log_name`` to avoid name overriding by the the ``DictConfigurator``.
-
-Airflow relies on the ``logging.config.dictConfig`` (`documentation <https://docs.python.org/3/library/logging.config.html>`_) method
-to `setup the logging stack <https://github.com/apache/airflow/blob/a58441ca1b263cae61a5bb653e6839f0dd29b08e/airflow/logging_config.py#L69>`_.
-However, during this setup, it iterates through the handlers and
-`explicitly sets their name <https://github.com/python/cpython/blob/2a4cbf17af19a01d942f9579342f77c39fbd23c4/Lib/logging/config.py#L578>`_:
-
-.. code-block:: python
-
-                for name in sorted(handlers):
-                    try:
-                        handler = self.configure_handler(handlers[name])
-                        handler.name = name
-                        handlers[name] = handler
-                    except Exception as e:
-                        # [...]
-                        pass
-
-So, before this fix:
-
-#. You setup the remote logging through the environment variables ``AIRFLOW__LOGGING__REMOTE_LOGGING="true"`` and ``AIRFLOW__LOGGING__REMOTE_BASE_LOG_FOLDER="stackdriver://host/path"``.
-#. Airflow instantiates a ``StackdriverTaskHandler`` with the name of ``"path"``
-#. **BUT** the ``dictConfig`` call overrides the name of the handler with the key of the handlers configuration (i.e. `task <https://github.com/apache/airflow/blob/a58441ca1b263cae61a5bb653e6839f0dd29b08e/airflow/config_templates/airflow_local_settings.py#L350>`_).
-#. Hence, the next calls to the ``emit`` method of the handler will generate logs to the wrong destination (``task`` instead of ``path``).
-
-Changing the field, from ``name`` to ``gcp_log_name`` prevents the overriding from the dictConfig.
diff --git a/scripts/ci/pre_commit/supported_versions.py b/scripts/ci/pre_commit/supported_versions.py
index 3354af2..98e7004 100755
--- a/scripts/ci/pre_commit/supported_versions.py
+++ b/scripts/ci/pre_commit/supported_versions.py
@@ -27,7 +27,7 @@
 HEADERS = ("Version", "Current Patch/Minor", "State", "First Release", "Limited Support", "EOL/Terminated")
 
 SUPPORTED_VERSIONS = (
-    ("2", "2.9.0", "Supported", "Dec 17, 2020", "TBD", "TBD"),
+    ("2", "2.9.1", "Supported", "Dec 17, 2020", "TBD", "TBD"),
     ("1.10", "1.10.15", "EOL", "Aug 27, 2018", "Dec 17, 2020", "June 17, 2021"),
     ("1.9", "1.9.0", "EOL", "Jan 03, 2018", "Aug 27, 2018", "Aug 27, 2018"),
     ("1.8", "1.8.2", "EOL", "Mar 19, 2017", "Jan 03, 2018", "Jan 03, 2018"),