This is an automated email from the ASF dual-hosted git repository. ephraimanierobi pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push: new 66e426d878 Airflow 2.9.1 has been released (#39431) 66e426d878 is described below commit 66e426d8783771cdf29a34212c304be3c6d833c8 Author: Ephraim Anierobi <splendidzig...@gmail.com> AuthorDate: Mon May 6 14:30:35 2024 +0100 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+kahls...@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+jedcunning...@users.noreply.github.com> --- .github/ISSUE_TEMPLATE/airflow_bug_report.yml | 2 +- Dockerfile | 2 +- README.md | 12 ++-- RELEASE_NOTES.rst | 71 ++++++++++++++++++++++ airflow/reproducible_build.yaml | 4 +- .../installation/supported-versions.rst | 2 +- generated/PYPI_README.md | 10 +-- newsfragments/38071.significant.rst | 26 -------- scripts/ci/pre_commit/supported_versions.py | 2 +- 9 files changed, 88 insertions(+), 43 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/airflow_bug_report.yml b/.github/ISSUE_TEMPLATE/airflow_bug_report.yml index 47e3793f27..a29187039b 100644 --- a/.github/ISSUE_TEMPLATE/airflow_bug_report.yml +++ b/.github/ISSUE_TEMPLATE/airflow_bug_report.yml @@ -25,7 +25,7 @@ body: 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 dcafa5e6f4..81fc69a704 100644 --- a/Dockerfile +++ b/Dockerfile @@ -45,7 +45,7 @@ ARG AIRFLOW_UID="50000" 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 25c8bff05a..5bf6034a92 100644 --- a/README.md +++ b/README.md @@ -98,7 +98,7 @@ 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.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 @@ as this is the only environment that is supported. The only distro that is used 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 @@ them to the appropriate format and workflow that your tool requires. ```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 @@ Apache Airflow version life cycle: | 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 1f323919ea..e6f86c0512 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 c6683aa2c0..a1fdf08fc5 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 200a9d14eb..4a86b7758c 100644 --- a/docs/apache-airflow/installation/supported-versions.rst +++ b/docs/apache-airflow/installation/supported-versions.rst @@ -29,7 +29,7 @@ Apache Airflow™ version life cycle: ========= ===================== ========= =============== ================= ================ 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 764a886a02..9cd680ef93 100644 --- a/generated/PYPI_README.md +++ b/generated/PYPI_README.md @@ -54,7 +54,7 @@ Use Airflow to author workflows as directed acyclic graphs (DAGs) of tasks. The 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 @@ as this is the only environment that is supported. The only distro that is used 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 @@ them to the appropriate format and workflow that your tool requires. ```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 6193de613f..0000000000 --- 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 3354af2cfe..98e7004fcf 100755 --- a/scripts/ci/pre_commit/supported_versions.py +++ b/scripts/ci/pre_commit/supported_versions.py @@ -27,7 +27,7 @@ AIRFLOW_SOURCES = Path(__file__).resolve().parent.parent.parent.parent 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"),