From 2c0a1191479f2f145d1cb90ad350c44def84281e Mon Sep 17 00:00:00 2001 From: Ephraim Anierobi Date: Tue, 20 Feb 2024 14:14:45 +0100 Subject: [PATCH] Update RELEASE_NOTES.rst --- README.md | 10 +-- RELEASE_NOTES.rst | 126 ++++++++++++++++++++++++---- airflow/reproducible_build.yaml | 4 +- generated/PYPI_README.md | 10 +-- newsfragments/35653.significant.rst | 21 ----- newsfragments/36147.significant.rst | 11 --- newsfragments/37501.significant.rst | 9 -- 7 files changed, 123 insertions(+), 68 deletions(-) delete mode 100644 newsfragments/35653.significant.rst delete mode 100644 newsfragments/36147.significant.rst delete mode 100644 newsfragments/37501.significant.rst diff --git a/README.md b/README.md index c5fcc16778712..6a1d03ae53254 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.8.1) | +| | Main version (dev) | Stable version (2.8.2) | |-------------|------------------------------|------------------------| | Python | 3.8, 3.9, 3.10, 3.11 | 3.8, 3.9, 3.10, 3.11 | | Platform | AMD64/ARM64(\*) | AMD64/ARM64(\*) | @@ -183,15 +183,15 @@ them to the appropriate format and workflow that your tool requires. ```bash -pip install 'apache-airflow==2.8.1' \ - --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.8.1/constraints-3.8.txt" +pip install 'apache-airflow==2.8.2' \ + --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.8.2/constraints-3.8.txt" ``` 2. Installing with extras (i.e., postgres, google) ```bash -pip install 'apache-airflow[postgres,google]==2.8.1' \ - --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.8.1/constraints-3.8.txt" +pip install 'apache-airflow[postgres,google]==2.8.2' \ + --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.8.2/constraints-3.8.txt" ``` For information on installing provider packages, check diff --git a/RELEASE_NOTES.rst b/RELEASE_NOTES.rst index 662a3e51893d5..5440a8550cc3d 100644 --- a/RELEASE_NOTES.rst +++ b/RELEASE_NOTES.rst @@ -27,26 +27,122 @@ Airflow 2.8.2 (2024-02-26) Significant Changes ^^^^^^^^^^^^^^^^^^^ -- The ``allowed_deserialization_classes`` flag now follows a glob pattern. +The ``allowed_deserialization_classes`` flag now follows a glob pattern (#36147). +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +For example if one wants to add the class ``airflow.tests.custom_class`` to the +``allowed_deserialization_classes`` list, it can be done by writing the full class +name (``airflow.tests.custom_class``) or a pattern such as the ones used in glob +search (e.g., ``airflow.*``, ``airflow.tests.*``). + +If you currently use a custom regexp path make sure to rewrite it as a glob pattern. + +Alternatively, if you still wish to match it as a regexp pattern, add it under the new +list ``allowed_deserialization_classes_regexp`` instead. + +The audit_logs permissions have been updated for heightened security (#37501). +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +This was done under the policy that we do not want users like Viewer, Ops, +and other users apart from Admin to have access to audit_logs. The intention behind +this change is to restrict users with less permissions from viewing user details +like First Name, Email etc. from the audit_logs when they are not permitted to. + +The impact of this change is that the existing users with non admin rights won't be able +to view or access the audit_logs, both from the Browse tab or from the DAG run. + +``AirflowTimeoutError`` is no longer ``except`` by default through ``Exception`` (#35653). +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" - For example if one wants to add the class ``airflow.tests.custom_class`` to the - ``allowed_deserialization_classes`` list, it can be done by writing the full class - name (``airflow.tests.custom_class``) or a pattern such as the ones used in glob - search (e.g., ``airflow.*``, ``airflow.tests.*``). +The ``AirflowTimeoutError`` is now inheriting ``BaseException`` instead of +``AirflowException``->``Exception``. +See https://docs.python.org/3/library/exceptions.html#exception-hierarchy - If you currently use a custom regexp path make sure to rewrite it as a glob pattern. +This prevents code catching ``Exception`` from accidentally +catching ``AirflowTimeoutError`` and continuing to run. +``AirflowTimeoutError`` is an explicit intent to cancel the task, and should not +be caught in attempts to handle the error and return some default value. - Alternatively, if you still wish to match it as a regexp pattern, add it under the new - list ``allowed_deserialization_classes_regexp`` instead. (#36147) -- The audit_logs permissions have been updated for heightened security. +Catching ``AirflowTimeoutError`` is still possible by explicitly ``except``ing +``AirflowTimeoutError`` or ``BaseException``. +This is discouraged, as it may allow the code to continue running even after +such cancellation requests. +Code that previously depended on performing strict cleanup in every situation +after catching ``Exception`` is advised to use ``finally`` blocks or +context managers. To perform only the cleanup and then automatically +re-raise the exception. +See similar considerations about catching ``KeyboardInterrupt`` in +https://docs.python.org/3/library/exceptions.html#KeyboardInterrupt - This was done under the policy that we do not want users like Viewer, Ops, - and other users apart from Admin to have access to audit_logs. The intention behind - this change is to restrict users with less permissions from viewing user details - like First Name, Email etc. from the audit_logs when they are not permitted to. - The impact of this change is that the existing users with non admin rights won't be able - to view or access the audit_logs, both from the Browse tab or from the DAG run. (#37501) +Bug Fixes +""""""""" +- Change ``AirflowTaskTimeout`` to inherit ``BaseException`` (#35653) +- Revert "Fix future DagRun rarely triggered by race conditions when max_active_runs reached its upper limit. (#31414)" (#37596) +- Change margin to padding so first task can be selected (#37527) +- Fix Airflow serialization for ``namedtuple`` (#37168) +- Fix bug with clicking url-unsafe tags (#37395) +- Set deterministic and new getter for ``Treeview`` function (#37162) +- Fix permissions of parent folders for log file handler (#37310) +- Fix permission check on DAGs when ``access_entity`` is specified (#37290) +- Fix the value of ``dateTimeAttrFormat`` constant (#37285) +- Resolve handler close race condition at triggerer shutdown (#37206) +- Fixing status icon alignment for various views (#36804) +- Remove superfluous ``@Sentry.enrich_errors`` (#37002) +- Use execution_date= param as a backup to base date for grid view (#37018) +- Handle SystemExit raised in the task. (#36986) +- Revoking audit_log permission from all users except admin (#37501) +- Fix broken regex for allowed_deserialization_classes (#36147) +- Fix the bug that affected the DAG end date. (#36144) +- Adjust node width based on task name length (#37254) +- fix: PythonVirtualenvOperator crashes if any python_callable function is defined in the same source as DAG (#37165) +- Fix collapsed grid width, line up selected bar with gantt (#37205) +- Adjust graph node layout (#37207) +- Revert the sequence of initializing configuration defaults (#37155) +- Displaying "actual" try number in TaskInstance view (#34635) +- Bugfix Triggering DAG with parameters is mandatory when show_trigger_form_if_no_params is enabled (#37063) +- Secret masker ignores passwords with special chars (#36692) +- Fix DagRuns with UPSTREAM_FAILED tasks get stuck in the backfill. (#36954) +- Disable ``dryrun`` auto-fetch (#36941) +- Fix copy button on a DAG run's config (#36855) +- Fix bug introduced by replacing spaces by + in run_id (#36877) +- Fix webserver always redirecting to home page if user was not logged in (#36833) +- REST API set description on POST to ``/variables`` endpoint (#36820) +- Sanitize the conn_id to disallow potential script execution (#32867) +- Fix task id copy button copying wrong id (#34904) +- Fix security manager inheritance in fab provider (#36538) +- Avoid ``pendulum.from_timestamp`` usage (#37160) + +Miscellaneous +""""""""""""" +- Bump ``undici`` from ``5.26.3`` to ``5.28.3`` in ``/airflow/www`` (#37493) +- Add Python ``3.12`` exclusions in ``providers/pyproject.toml`` (#37404) +- Remove ``markdown`` from core dependencies (#37396) +- Remove unused ``pageSize`` method. (#37319) +- Add more-itertools as dependency of common-sql (#37359) +- Replace other ``Python 3.11`` and ``3.12`` deprecations (#37478) +- Include ``airflow_pre_installed_providers.txt`` into ``sdist`` distribution (#37388) +- Turn Pydantic into an optional dependency (#37320) +- Limit ``universal-pathlib to < 0.2.0`` (#37311) +- Allow running airflow against sqlite in-memory DB for tests (#37144) +- Add description to ``queue_when`` (#36997) +- Updated ``config.yml`` for environment variable ``sql_alchemy_connect_args`` (#36526) +- Bump min version of ``Alembic to 1.13.1`` (#36928) +- Limit ``flask-session`` to ``<0.6`` (#36895) + +Doc Only Changes +"""""""""""""""" +- Fix upgrade docs to reflect true ``CLI`` flags available (#37231) +- Fix a bug in fundamentals doc (#37440) +- Add redirect for deprecated page (#37384) +- Fix the ``otel`` config descriptions (#37229) +- Update ``Objectstore`` tutorial with ``prereqs`` section (#36983) +- Add more precise description on avoiding generic ``package/module`` names (#36927) +- Add airflow version substitution into Docker Compose Howto (#37177) +- Add clarification about DAG author capabilities to security model (#37141) +- Move docs for cron basics to Authoring and Scheduling section (#37049) +- Link to release notes in the upgrade docs (#36923) +- Prevent templated field logic checks in ``__init__`` of operators automatically (#33786) Airflow 2.8.1 (2024-01-19) diff --git a/airflow/reproducible_build.yaml b/airflow/reproducible_build.yaml index a835eaaf798d4..bf3a99b8ba55e 100644 --- a/airflow/reproducible_build.yaml +++ b/airflow/reproducible_build.yaml @@ -1,2 +1,2 @@ -release-notes-hash: 41873f535e9f26a727b5670dbd4d41f3 -source-date-epoch: 1708434543 +release-notes-hash: de24c62141c95558f6109dc8452c24dc +source-date-epoch: 1708548685 diff --git a/generated/PYPI_README.md b/generated/PYPI_README.md index 9e349cd26eab0..53f1c06161ae8 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.8.1) | +| | Main version (dev) | Stable version (2.8.2) | |-------------|------------------------------|------------------------| | Python | 3.8, 3.9, 3.10, 3.11 | 3.8, 3.9, 3.10, 3.11 | | Platform | AMD64/ARM64(\*) | AMD64/ARM64(\*) | @@ -135,15 +135,15 @@ them to the appropriate format and workflow that your tool requires. ```bash -pip install 'apache-airflow==2.8.1' \ - --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.8.1/constraints-3.8.txt" +pip install 'apache-airflow==2.8.2' \ + --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.8.2/constraints-3.8.txt" ``` 2. Installing with extras (i.e., postgres, google) ```bash -pip install 'apache-airflow[postgres,google]==2.8.1' \ - --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.8.1/constraints-3.8.txt" +pip install 'apache-airflow[postgres,google]==2.8.2' \ + --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.8.2/constraints-3.8.txt" ``` For information on installing provider packages, check diff --git a/newsfragments/35653.significant.rst b/newsfragments/35653.significant.rst deleted file mode 100644 index ea93c833439bd..0000000000000 --- a/newsfragments/35653.significant.rst +++ /dev/null @@ -1,21 +0,0 @@ -``AirflowTimeoutError`` is no longer ``except``ed by default through ``Exception`` - -The ``AirflowTimeoutError`` is now inheriting ``BaseException`` instead of -``AirflowException``->``Exception``. -See https://docs.python.org/3/library/exceptions.html#exception-hierarchy - -This prevents code catching ``Exception`` from accidentally -catching ``AirflowTimeoutError`` and continuing to run. -``AirflowTimeoutError`` is an explicit intent to cancel the task, and should not -be caught in attempts to handle the error and return some default value. - -Catching ``AirflowTimeoutError`` is still possible by explicitly ``except``ing -``AirflowTimeoutError`` or ``BaseException``. -This is discouraged, as it may allow the code to continue running even after -such cancellation requests. -Code that previously depended on performing strict cleanup in every situation -after catching ``Exception`` is advised to use ``finally`` blocks or -context managers. To perform only the cleanup and then automatically -re-raise the exception. -See similar considerations about catching ``KeyboardInterrupt`` in -https://docs.python.org/3/library/exceptions.html#KeyboardInterrupt diff --git a/newsfragments/36147.significant.rst b/newsfragments/36147.significant.rst deleted file mode 100644 index 105e1b74d454a..0000000000000 --- a/newsfragments/36147.significant.rst +++ /dev/null @@ -1,11 +0,0 @@ -The ``allowed_deserialization_classes`` flag now follows a glob pattern. - -For example if one wants to add the class ``airflow.tests.custom_class`` to the -``allowed_deserialization_classes`` list, it can be done by writing the full class -name (``airflow.tests.custom_class``) or a pattern such as the ones used in glob -search (e.g., ``airflow.*``, ``airflow.tests.*``). - -If you currently use a custom regexp path make sure to rewrite it as a glob pattern. - -Alternatively, if you still wish to match it as a regexp pattern, add it under the new -list ``allowed_deserialization_classes_regexp`` instead. diff --git a/newsfragments/37501.significant.rst b/newsfragments/37501.significant.rst deleted file mode 100644 index 0fe82850b3889..0000000000000 --- a/newsfragments/37501.significant.rst +++ /dev/null @@ -1,9 +0,0 @@ -The audit_logs permissions have been updated for heightened security. - -This was done under the policy that we do not want users like Viewer, Ops, -and other users apart from Admin to have access to audit_logs. The intention behind -this change is to restrict users with less permissions from viewing user details -like First Name, Email etc. from the audit_logs when they are not permitted to. - -The impact of this change is that the existing users with non admin rights won't be able -to view or access the audit_logs, both from the Browse tab or from the DAG run.