Skip to content
Snippets Groups Projects
CHANGELOG.txt 298 KiB
Newer Older
Airflow 2.2.3, 2021-12-21
-------------------------

Bug Fixes
"""""""""

- Lazy Jinja2 context (#20217)
- Exclude ``snowflake-sqlalchemy`` v1.2.5 (#20245)
- Move away from legacy ``importlib.resources`` API (#19091)
- Move setgid as the first command executed in forked task runner (#20040)
- Fix race condition when starting ``DagProcessorAgent`` (#19935)
- Limit ``httpx`` to <0.20.0 (#20218)
- Log provider import errors as debug warnings (#20172)
- Bump minimum required ``alembic`` version (#20153)
- Fix log link in gantt view (#20121)
- fixing #19028 by moving chown to use sudo (#20114)
- Lift off upper bound for ``MarkupSafe`` (#20113)
- Fix infinite recursion on redact log (#20039)
- Fix db downgrades (#19994)
- Context class handles deprecation (#19886)
- Fix possible reference to undeclared variable (#19933)
- Validate ``DagRun`` state is valid on assignment (#19898)
- Workaround occasional deadlocks with MSSQL (#19856)
- Enable task run setting to be able reinitialise (#19845)
- Fix log endpoint for same task (#19672)
- Cast macro datetime string inputs explicitly (#19592)
- Do not crash with stacktrace when task instance is missing (#19478)
- Fix log timezone in task log view (#19342) (#19401)
- Fix: Add taskgroup tooltip to graph view (#19083)
- Rename execution date in forms and tables (#19063)
- Simplify "invalid TI state" message (#19029)
- Handle case of nonexistent file when preparing file path queue (#18998)
- Do not create dagruns for DAGs with import errors  (#19367)
- Fix field relabeling when switching between conn types (#19411)
- ``KubernetesExecutor`` should default to template image if used (#19484)
- Fix task instance api cannot list task instances with ``None`` state (#19487)
- Fix IntegrityError in ``DagFileProcessor.manage_slas`` (#19553)
- Declare data interval fields as serializable (#19616)
- Relax timetable class validation (#19878)
- Fix labels used to find queued ``KubernetesExecutor`` pods (#19904)
- Fix moved data migration check for MySQL when replcation is used (#19999)

Doc only changes
""""""""""""""""

- Warn without tracebacks when example_dags are missing deps (#20295)
- Deferrable operators doc clarification (#20150)
- Ensure the example DAGs are all working (#19355)
- Updating core example DAGs to use TaskFlow API where applicable (#18562)
- Add xcom clearing behaviour on task retries (#19968)
- Add a short chapter focusing on adapting secret format for connections (#19859)
- Add information about supported OS-es for Apache Airflow (#19855)
- Update docs to reflect that changes to the ``base_log_folder`` require updating other configs (#19793)
- Disclaimer in ``KubernetesExecutor`` pod template docs (#19686)
- Add upgrade note on ``execution_date`` -> ``run_id`` (#19593)
- Expanding ``.output`` operator property information in TaskFlow tutorial doc (#19214)
- Add example SLA DAG (#19563)
- Add a proper example to patch DAG (#19465)
- Add DAG file processing description to Scheduler Concepts (#18954)
- Updating explicit arg example in TaskFlow API tutorial doc (#18907)
- Adds back documentation about context usage in Python/@task (#18868)
- Add release date for when an endpoint/field is added in the REST API (#19203)
- Better ``pod_template_file`` examples (#19691)
- Add decription on how you can customize image entrypoint (#18915)
- Dags-in-image pod template example should not have dag mounts (#19337)

Airflow 2.2.2, 2021-11-15
-------------------------

Bug Fixes
"""""""""

- Fix bug when checking for existence of a Variable (#19395)
- Fix Serialization when ``relativedelta`` is passed as ``schedule_interval``  (#19418)
- Fix moving of dangling TaskInstance rows for SQL Server (#19425)
- Fix task instance modal in gantt view (#19258)
- Fix serialization of ``Params`` with set data type (#19267)
- Check if job object is ``None`` before calling ``.is_alive()`` (#19380)
- Task should fail immediately when pod is unprocessable (#19359)
- Fix downgrade for a DB Migration (#19390)
- Only mark SchedulerJobs as failed, not any jobs (#19375)
- Fix message on "Mark as" confirmation page (#19363)
- Bugfix: Check next run exists before reading data interval (#19307)
- Fix MySQL db migration with default encoding/collation (#19268)
- Fix hidden tooltip position (#19261)
- ``sqlite_default`` Connection has been hard-coded to ``/tmp``, use ``gettempdir`` instead (#19255)
- Fix Toggle Wrap on DAG code page (#19211)
- Clarify "dag not found" error message in CLI (#19338)
- Add Note to SLA regarding ``schedule_interval`` (#19173)
- Use ``execution_date`` to check for existing ``DagRun`` for ``TriggerDagRunOperator`` (#18968)
- Add explicit session parameter in ``PoolSlotsAvailableDep`` (#18875)
- FAB still requires ``WTForms<3.0`` (#19466)
- Fix missing dagruns when ``catchup=True`` (#19528)

Doc only changes
""""""""""""""""

- Add missing parameter documentation for "timetable" (#19282)
- Improve Kubernetes Executor docs (#19339)
- Update image tag used in docker docs

Airflow 2.2.1, 2021-10-29
-------------------------

Bug Fixes
"""""""""

- Fix Unexpected commit error in schedulerjob (#19213)
- Add DagRun.logical_date as a property (#19198)
- Clear ``ti.next_method`` and ``ti.next_kwargs`` on task finish (#19183)
- Faster PostgreSQL db migration to Airflow 2.2 (#19166)
- Remove incorrect type comment in ``Swagger2Specification._set_defaults`` classmethod (#19065)
- Add TriggererJob to jobs check command (#19179, #19185)
- Hide tooltip when next run is ``None`` (#19112)
- Create TI context with data interval compat layer (#19148)
- Fix queued dag runs changes ``catchup=False`` behaviour (#19130, #19145)
- add detailed information to logging when a dag or a task finishes. (#19097)
- Warn about unsupported Python 3.10 (#19060)
- Fix catchup by limiting queued dagrun creation using ``max_active_runs`` (#18897)
- Prevent scheduler crash when serialized dag is missing (#19113)
- Don't install SQLAlchemy/Pendulum adapters for other DBs (#18745)
- Workaround libstdcpp TLS error (#19010)
- Change ``ds``, ``ts``, etc. back to use logical date (#19088)
- Ensure task state doesn't change when marked as failed/success/skipped (#19095)
- Relax packaging requirement (#19087)
- Rename trigger page label to Logical Date (#19061)
- Allow Param to support a default value of ``None`` (#19034)
- Upgrade old DAG/task param format when deserializing from the DB (#18986)
- Don't bake ENV and _cmd into tmp config for non-sudo (#18772)
- CLI: Fail ``backfill`` command before loading DAGs if missing args (#18994)
- BugFix: Null execution date on insert to ``task_fail`` violating NOT NULL (#18979)
- Try to move "dangling" rows in upgradedb (#18953)
- Row lock TI query in ``SchedulerJob._process_executor_events`` (#18975)
- Sentry before send fallback (#18980)
- Fix ``XCom.delete`` error in Airflow 2.2.0 (#18956)
- Check python version before starting triggerer (#18926)

Doc only changes
""""""""""""""""

- Update access control documentation for TaskInstances and DagRuns (#18644)
- Add information about keepalives for managed Postgres (#18850)
- Doc: Add Callbacks Section to Logging & Monitoring (#18842)
- Group PATCH DAGrun together with other DAGRun endpoints (#18885)

Airflow 2.2.0, 2021-10-11
-------------------------

New Features
""""""""""""

- AIP-39: Add (customizable) Timetable class to Airflow for richer scheduling behaviour (#15397, #16030,
  #16352, #17030, #17122, #17414, #17552, #17755, #17989, #18084, #18088, #18244, #18266, #18420, #18434,
  #18421, #18475, #18499, #18573, #18522, #18729, #18706, #18742, #18786, #18804)
- AIP-40: Add Deferrable "Async" Tasks (#15389, #17564, #17565, #17601, #17745, #17747, #17748, #17875,
  #17876, #18129, #18210, #18214, #18552, #18728, #18414)
- Add a Docker Taskflow decorator (#15330, #18739)
- Add Airflow Standalone command (#15826)
- Display alert messages on dashboard from local settings (#18284)
- Advanced Params using json-schema (#17100)
- Ability to test connections from UI or API (#15795, #18750)
- Add Next Run to UI (#17732)
- Add default weight rule configuration option (#18627)
- Add a calendar field to choose the execution date of the DAG when triggering it (#16141)
- Allow setting specific ``cwd`` for BashOperator (#17751)
- Show import errors in DAG views (#17818)
- Add pre/post execution hooks [Experimental] (#17576)
- Added table to view providers in Airflow ui under admin tab (#15385)
- Adds secrets backend/logging/auth information to provider yaml (#17625)
- Add date format filters to Jinja environment (#17451)
- Introduce ``RESTARTING`` state (#16681)
- Webserver: Unpause DAG on manual trigger (#16569)
- API endpoint to create new user (#16609)
- Add ``insert_args`` for support transfer replace (#15825)
- Add recursive flag to glob in filesystem sensor (#16894)
- Add conn to jinja template context (#16686)
- Add ``default_args`` for ``TaskGroup`` (#16557)
- Allow adding duplicate connections from UI (#15574)
- Allow specifying multiple URLs via the CORS config option (#17941)
- Implement API endpoint for DAG deletion (#17980)
- Add DAG run endpoint for marking a dagrun success or failed(#17839)
- Add support for ``kinit`` options ``[-f|-F]`` and ``[-a|-A]`` (#17816)
- Queue support for ``DaskExecutor`` using Dask Worker Resources (#16829, #18720)
- Make auto refresh interval configurable (#18107)

Improvements
""""""""""""
- Small improvements for Airflow UI (#18715, #18795)
- Rename ``processor_poll_interval`` to ``scheduler_idle_sleep_time`` (#18704)
- Check the allowed values for the logging level (#18651)
- Fix error on triggering a dag that doesn't exist using ``dagrun_conf`` (#18655)
- Add muldelete action to ``TaskInstanceModelView`` (#18438)
- Avoid importing DAGs during clean DB installation (#18450)
- Require can_edit on DAG privileges to modify TaskInstances and DagRuns (#16634)
- Make Kubernetes job description fit on one log line (#18377)
- Always draw borders if task instance state is null or undefined (#18033)
- Inclusive Language (#18349)
- Improved log handling for zombie tasks (#18277)
- Adding ``Variable.update`` method and improving detection of variable key collisions (#18159)
- Add note about params on trigger DAG page (#18166)
- Change ``TaskInstance`` and ``TaskReschedule`` PK from ``execution_date`` to ``run_id`` (#17719)
- Adding ``TaskGroup`` support in ``BaseOperator.chain()`` (#17456)
- Allow filtering DAGS by tags in the REST API (#18090)
- Optimize imports of Providers Manager (#18052)
- Adds capability of Warnings for incompatible community providers (#18020)
- Serialize the ``template_ext`` attribute to show it in UI (#17985)
- Add ``robots.txt`` and ``X-Robots-Tag`` header (#17946)
- Refactor ``BranchDayOfWeekOperator``, ``DayOfWeekSensor`` (#17940)
- Update error message to guide the user into self-help mostly (#17929)
- Update to Celery 5 (#17397)
- Add links to provider's documentation (#17736)
- Remove Marshmallow schema warnings (#17753)
- Rename ``none_failed_or_skipped`` by ``none_failed_min_one_success`` trigger rule (#17683)
- Remove ``[core] store_dag_code`` & use DB to get Dag Code (#16342)
- Rename ``task_concurrency`` to ``max_active_tis_per_dag`` (#17708)
- Import Hooks lazily individually in providers manager (#17682)
- Adding support for multiple task-ids in the external task sensor (#17339)
- Replace ``execution_date`` with ``run_id`` in airflow tasks run command (#16666)
- Make output from users cli command more consistent (#17642)
- Open relative extra links in place (#17477)
- Move ``worker_log_server_port`` option to the logging section (#17621)
- Use gunicorn to serve logs generated by worker (#17591)
- Improve validation of Group id (#17578)
- Simplify 404 page (#17501)
- Add XCom.clear so it's hookable in custom XCom backend (#17405)
- Add deprecation notice for ``SubDagOperator`` (#17488)
- Support DAGS folder being in different location on scheduler and runners (#16860)
- Remove /dagrun/create and disable edit form generated by F.A.B (#17376)
- Enable specifying dictionary paths in ``template_fields_renderers`` (#17321)
- error early if virtualenv is missing (#15788)
- Handle connection parameters added to Extra and custom fields (#17269)
- Fix ``airflow celery stop`` to accept the pid file. (#17278)
- Remove DAG refresh buttons (#17263)
- Deprecate dummy trigger rule in favor of always (#17144)
- Be verbose about failure to import ``airflow_local_settings`` (#17195)
- Include exit code in ``AirflowException`` str when ``BashOperator`` fails. (#17151)
- Adding EdgeModifier support for chain() (#17099)
- Only allows supported field types to be used in custom connections (#17194)
- Secrets backend failover (#16404)
- Warn on Webserver when using ``SQLite`` or ``SequentialExecutor`` (#17133)
- Extend ``init_containers`` defined in ``pod_override`` (#17537)
- Client-side filter dag dependencies (#16253)
- Improve executor validation in CLI (#17071)
- Prevent running ``airflow db init/upgrade`` migrations and setup in parallel. (#17078)
- Update ``chain()`` and ``cross_downstream()`` to support ``XComArgs`` (#16732)
- Improve graph view refresh (#16696)
- When a task instance fails with exception, log it (#16805)
- Set process title for ``serve-logs`` and ``LocalExecutor`` (#16644)
- Rename ``test_cycle`` to ``check_cycle`` (#16617)
- Add schema as ``DbApiHook`` instance attribute (#16521, #17423)
- Improve compatibility with MSSQL (#9973)
- Add transparency for unsupported connection type (#16220)
- Call resource based fab methods (#16190)
- Format more dates with timezone (#16129)
- Replace deprecated ``dag.sub_dag`` with ``dag.partial_subset`` (#16179)
- Treat ``AirflowSensorTimeout`` as immediate failure without retrying (#12058)
- Marking success/failed automatically clears failed downstream tasks  (#13037)
- Add close/open indicator for import dag errors (#16073)
- Add collapsible import errors (#16072)
- Always return a response in TI's ``action_clear`` view (#15980)
- Add cli command to delete user by email (#15873)
- Use resource and action names for FAB permissions (#16410)
- Rename DAG concurrency (``[core] dag_concurrency``) settings for easier understanding (#16267, #18730)
- Calendar UI improvements (#16226)
- Refactor: ``SKIPPED`` should not be logged again as ``SUCCESS`` (#14822)
- Remove  version limits for dnspython (#18046, #18162)
- Accept custom run ID in TriggerDagRunOperator (#18788)

Bug Fixes
"""""""""
- Make REST API patch user endpoint work the same way as the UI (#18757)
- Properly set ``start_date`` for cleared tasks (#18708)
- Ensure task_instance exists before running update on its state(REST API) (#18642)
- Make ``AirflowDateTimePickerWidget`` a required field (#18602)
- Retry deadlocked transactions on deleting old rendered task fields (#18616)
- Fix `retry_exponential_backoff` divide by zero error when retry delay is zero (#17003)
- Improve how UI handles datetimes (#18611, #18700)
- Bugfix: dag_bag.get_dag should return None, not raise exception (#18554)
- Only show the task modal if it is a valid instance (#18570)
- Fix accessing rendered ``{{ task.x }}`` attributes from within templates (#18516)
- Add missing email type of connection (#18502)
- Don't use flash for "same-page" UI messages. (#18462)
- Fix task group tooltip (#18406)
- Properly fix dagrun update state endpoint (#18370)
- Properly handle ti state difference between executor and scheduler (#17819)
- Fix stuck "queued" tasks in KubernetesExecutor (#18152)
- Don't permanently add zip DAGs to ``sys.path`` (#18384)
- Fix random deadlocks in MSSQL database (#18362)
- Deactivating DAGs which have been removed from files (#17121)
- When syncing dags to db remove ``dag_tag`` rows that are now unused (#8231)
- Graceful scheduler shutdown on error (#18092)
- Fix mini scheduler not respecting ``wait_for_downstream`` dep (#18338)
- Pass exception to ``run_finished_callback`` for Debug Executor (#17983)
- Make ``XCom.get_one`` return full, not abbreviated values (#18274)
- Use try/except when closing temporary file in task_runner (#18269)
- show next run if not none (#18273)
- Fix DB session handling in ``XCom.set`` (#18240)
- Fix external_executor_id not being set for manually run jobs (#17207)
- Fix deleting of zipped Dags in Serialized Dag Table (#18243)
- Return explicit error on user-add for duplicated email (#18224)
- Remove loading dots even when last run data is empty (#18230)
- Swap dag import error dropdown icons (#18207)
- Automatically create section when migrating config (#16814)
- Set encoding to utf-8 by default while reading task logs (#17965)
- Apply parent dag permissions to subdags (#18160)
- Change id collation for MySQL to case-sensitive (#18072)
- Logs task launch exception in ``StandardTaskRunner`` (#17967)
- Applied permissions to ``self._error_file`` (#15947)
- Fix blank dag dependencies view (#17990)
- Add missing menu access for dag dependencies and configurations pages (#17450)
- Fix passing Jinja templates in ``DateTimeSensor`` (#17959)
- Fixing bug which restricted the visibility of ImportErrors (#17924)
- Fix grammar in ``traceback.html`` (#17942)
- Fix ``DagRunState`` enum query for ``MySQLdb`` driver (#17886)
- Fixed button size in "Actions" group. (#17902)
- Only show import errors for DAGs a user can access (#17835)
- Show all import_errors from zip files (#17759)
- fix EXTRA_LOGGER_NAMES param and related docs (#17808)
- Use one interpreter for Airflow and gunicorn (#17805)
- Fix: Mysql 5.7 id utf8mb3 (#14535)
- Fix dag_processing.last_duration metric random holes (#17769)
- Automatically use ``utf8mb3_general_ci`` collation for MySQL (#17729)
- fix: filter condition of ``TaskInstance`` does not work #17535 (#17548)
- Dont use TaskInstance in CeleryExecutor.trigger_tasks (#16248)
- Remove locks for upgrades in MSSQL (#17213)
- Create virtualenv via python call (#17156)
- Ensure a DAG is acyclic when running ``DAG.cli()`` (#17105)
- Translate non-ascii characters (#17057)
- Change the logic of ``None`` comparison in ``model_list`` template (#16893)
- Have UI and POST /task_instances_state API endpoint have same behaviour (#16539)
- ensure task is skipped if missing sla (#16719)
- Fix direct use of ``cached_property`` module (#16710)
- Fix TI success confirm page (#16650)
- Modify return value check in python virtualenv jinja template (#16049)
- Fix dag dependency search (#15924)
- Make custom JSON encoder support ``Decimal`` (#16383)
- Bugfix: Allow clearing tasks with just ``dag_id`` and empty ``subdir`` (#16513)
- Convert port value to a number before calling test connection (#16497)
- Handle missing/null serialized DAG dependencies (#16393)
- Correctly set ``dag.fileloc`` when using the ``@dag`` decorator (#16384)
- Fix TI success/failure links (#16233)
- Correctly implement autocomplete early return in ``airflow/www/views.py`` (#15940)
- Backport fix to allow pickling of Loggers to Python 3.6 (#18798)
- Fix bug that Backfill job fail to run when there are tasks run into ``reschedule`` state (#17305, #18806)

Doc only changes
""""""""""""""""
- Update ``dagbag_size`` documentation (#18824)
- Update documentation about bundle extras (#18828)
- Fix wrong Postgres ``search_path`` set up instructions (#17600)
- Remove ``AIRFLOW_GID`` from Docker images (#18747)
- Improve error message for BranchPythonOperator when no task_id to follow (#18471)
- Improve guidance to users telling them what to do on import timeout (#18478)
- Explain scheduler fine-tuning better (#18356)
- Added example JSON for airflow pools import (#18376)
- Add ``sla_miss_callback`` section to the documentation (#18305)
- Explain sentry default environment variable for subprocess hook (#18346)
- Refactor installation pages (#18282)
- Improves quick-start docker-compose warnings and documentation (#18164)
- Production-level support for MSSQL (#18382)
- Update non-working example in documentation (#18067)
- Remove default_args pattern + added get_current_context() use for Core Airflow example DAGs (#16866)
- Update max_tis_per_query to better render on the webpage (#17971)
- Adds Github Oauth example with team based authorization (#17896)
- Update docker.rst (#17882)
- Example xcom update (#17749)
- Add doc warning about connections added via envvars (#17915)
- fix wrong documents around upgrade-check.rst (#17903)
- Add Brent to Committers list (#17873)
- Improves documentation about modules management (#17757)
- Remove deprecated metrics from metrics.rst (#17772)
- Make sure "production-readiness" of docker-compose is well explained (#17731)
- Doc: Update Upgrade to v2 docs with Airflow 1.10.x EOL dates (#17710)
- Doc: Replace deprecated param from docstrings (#17709)
- docs(dagowner): describe dag owner more carefully (#17699)
- docs(impersonation): update note so avoid misintrepretation (#17701)
- Docs: Make ``DAG.is_active`` read-only in API (#17667)
- Update documentation regarding Python 3.9 support (#17611)
- Fix MySQL database character set instruction (#17603)
- Document overriding ``XCom.clear`` for data lifecycle management (#17589)
- Path correction in docs for airflow core (#17567)
- docs(celery): reworded, add actual multiple queues example (#17541)
- Doc: Add FAQ to speed up parsing with tons of dag files (#17519)
- Improve image building documentation for new users (#17409)
- Doc: Strip unnecessary arguments from MariaDB JIRA URL (#17296)
- Update warning about MariaDB and multiple schedulers (#17287)
- Doc: Recommend using same configs on all Airflow components (#17146)
- Move docs about masking to a new page (#17007)
- Docs: Suggest use of Env vars instead of Airflow Vars in best practises doc (#16926)
- Docs: Better description for ``pod_template_file`` (#16861)
- Add Aneesh Joseph as Airflow Committer (#16835)
- Docs: Added new pipeline example for the tutorial docs (#16548)
- Remove upstart from docs (#16672)
- Add new committers: ``Jed`` and ``TP`` (#16671)
- Docs: Fix ``flask-ouathlib`` to ``flask-oauthlib`` in Upgrading docs (#16320)
- Docs: Fix creating a connection docs (#16312)
- Docs: Fix url for ``Elasticsearch`` (#16275)
- Small improvements for README.md files (#16244)
- Fix docs for ``dag_concurrency`` (#16177)
- Check syntactic correctness for code-snippets (#16005)
- Add proper link for wheel packages in docs. (#15999)
- Add Docs for ``default_pool`` slots (#15997)
- Add memory usage warning in quick-start documentation (#15967)
- Update example ``KubernetesExecutor`` ``git-sync`` pod template file (#15904)
- Docs: Fix Taskflow API docs (#16574)
- Added new pipeline example for the tutorial docs (#16084)
- Updating the DAG docstring to include ``render_template_as_native_obj`` (#16534)
- Update docs on setting up SMTP (#16523)
- Docs: Fix API verb from ``POST`` to ``PATCH`` (#16511)

Misc/Internal
"""""""""""""
- Renaming variables to be consistent with code logic (#18685)
- Simplify strings previously split across lines (#18679)
- fix exception string of ``BranchPythonOperator`` (#18623)
- Add multiple roles when creating users (#18617)
- Move FABs base Security Manager into Airflow. (#16647)
- Remove unnecessary css state colors (#18461)
- Update ``boto3`` to ``<1.19`` (#18389)
- Improve coverage for ``airflow.security.kerberos module`` (#18258)
- Fix kinesis test (#18337)
- Fix provider test accessing importlib-resources (#18228)
- Silence warnings in tests from using SubDagOperator (#18275)
- Fix usage of ``range(len())`` to ``enumerate`` (#18174)
- Test coverage on the autocomplete view (#15943)
- Add "packaging" to core requirements (#18122)
- Adds LoggingMixins to BaseTrigger (#18106)
- Fix building docs in ``main`` builds (#18035)
- Remove upper-limit on ``tenacity`` (#17593)
- Remove  redundant ``numpy`` dependency (#17594)
- Bump ``mysql-connector-python`` to latest version (#17596)
- Make ``pandas`` an optional core dependency (#17575)
- Add more typing to airflow.utils.helpers (#15582)
- Chore: Some code cleanup in ``airflow/utils/db.py`` (#17090)
- Refactor: Remove processor_factory from DAG processing (#16659)
- Remove AbstractDagFileProcessorProcess from dag processing (#16816)
- Update TaskGroup typing (#16811)
- Update ``click`` to 8.x (#16779)
- Remove remaining Pylint disables (#16760)
- Remove duplicated try, there is already a try in create_session (#16701)
- Removes pylint from our toolchain (#16682)
- Refactor usage of unneeded function call (#16653)
- Add type annotations to setup.py (#16658)
- Remove SQLAlchemy <1.4 constraint (#16630) (Note: our dependencies still have a requirement on <1.4)
- Refactor ``dag.clear`` method (#16086)
- Use ``DAG_ACTIONS`` constant (#16232)
- Use updated ``_get_all_non_dag_permissions`` method (#16317)
- Add updated-name wrappers for built-in FAB methods (#16077)
- Remove ``TaskInstance.log_filepath`` attribute (#15217)
- Removes unnecessary function call in ``airflow/www/app.py`` (#15956)
- Move ``plyvel`` to google provider extra (#15812)
- Update permission migrations to use new naming scheme (#16400)
- Use resource and action names for FAB (#16380)
- Swap out calls to ``find_permission_view_menu`` for ``get_permission`` wrapper (#16377)
- Fix deprecated default for ``fab_logging_level`` to ``WARNING`` (#18783)
- Allow running tasks from UI when using ``CeleryKubernetesExecutor`` (#18441)
Airflow 2.1.4, 2021-09-18
-------------------------

Bug Fixes
"""""""""

- Fix deprecation error message rather than silencing it (#18126)
- Limit the number of queued dagruns created by the Scheduler (#18065)
- Fix ``DagRun`` execution order from queued to running not being properly followed (#18061)
- Fix ``max_active_runs`` not allowing moving of queued dagruns to running (#17945)
- Avoid redirect loop for users with no permissions (#17838)
- Avoid endless redirect loop when user has no roles (#17613)
- Fix log links on graph TI modal (#17862)
- Hide variable import form if user lacks permission (#18000)
- Improve dag/task concurrency check (#17786)
- Fix Clear task instances endpoint resets all DAG runs bug (#17961)
- Fixes incorrect parameter passed to views (#18083) (#18085)
- Fix Sentry handler from ``LocalTaskJob`` causing error (#18119)
- Limit ``colorlog`` version (6.x is incompatible) (#18099)
- Only show Pause/Unpause tooltip on hover (#17957)
- Improve graph view load time for dags with open groups (#17821)
- Increase width for Run column (#17817)
- Fix wrong query on running tis (#17631)
- Add root to tree refresh url (#17633)
- Do not delete running DAG from the UI (#17630)
- Improve discoverability of Provider packages' functionality
- Do not let ``create_dagrun`` overwrite explicit ``run_id`` (#17728)
- Regression on pid reset to allow task start after heartbeat (#17333)
- Set task state to failed when pod is DELETED while running (#18095)
- Advises the kernel to not cache log files generated by Airflow (#18054)
- Sort adopted tasks in ``_check_for_stalled_adopted_tasks`` method (#18208)

Doc only changes
""""""""""""""""

- Update version added fields in airflow/config_templates/config.yml (#18128)
- Improve the description of how to handle dynamic task generation (#17963)
- Improve cross-links to operators and hooks references (#17622)
- Doc: Fix replacing Airflow version for Docker stack (#17711)
- Make the providers operators/hooks reference much more usable (#17768)
- Update description about the new ``connection-types`` provider meta-data
- Suggest to use secrets backend for variable when it contains sensitive data (#17319)
- Separate Installing from sources section and add more details (#18171)
- Doc: Use ``closer.lua`` script for downloading sources (#18179)
- Doc: Improve installing from sources (#18194)
- Improves installing from sources pages for all components (#18251)

Airflow 2.1.3, 2021-08-23
-------------------------

Bug Fixes
"""""""""

- Fix task retries when they receive ``sigkill`` and have retries and properly handle ``sigterm`` (#16301)
- Fix redacting secrets in context exceptions. (#17618)
- Fix race condition with dagrun callbacks (#16741)
- Add 'queued' to DagRunState (#16854)
- Add 'queued' state to DagRun (#16401)
- Fix external elasticsearch logs link (#16357)
- Add proper warning message when recorded PID is different from current PID (#17411)
- Fix running tasks with ``default_impersonation`` config (#17229)
- Rescue if a DagRun's DAG was removed from db (#17544)
- Fixed broken json_client (#17529)
- Handle and log exceptions raised during task callback (#17347)
- Fix CLI ``kubernetes cleanup-pods`` which fails on invalid label key (#17298)
- Show serialization exceptions in DAG parsing log (#17277)
- Fix: ``TaskInstance`` does not show ``queued_by_job_id`` & ``external_executor_id`` (#17179)
- Adds more explanatory message when ``SecretsMasker`` is not configured (#17101)
- Enable the use of ``__init_subclass__`` in subclasses of ``BaseOperator`` (#17027)
- Fix task instance retrieval in XCom view (#16923)
- Validate type of ``priority_weight`` during parsing (#16765)
- Correctly handle custom ``deps` and ``task_group`` during DAG Serialization (#16734)
- Fix slow (cleared) tasks being be adopted by Celery worker. (#16718)
- Fix calculating duration in tree view (#16695)
- Fix ``AttributeError``: ``datetime.timezone`` object has no attribute ``name`` (#16599)
- Redact conn secrets in webserver logs (#16579)
- Change graph focus to top of view instead of center (#16484)
- Fail tasks in scheduler when executor reports they failed (#15929)
- fix(smart_sensor): Unbound variable errors (#14774)
- Add back missing permissions to ``UserModelView`` controls. (#17431)
- Better diagnostics and self-healing of docker-compose (#17484)
- Improve diagnostics message when users have ``secret_key`` mis-configured (#17410)
- Stop checking ``execution_date`` in ``task_instance.refresh_from_db`` (#16809)

Improvements
""""""""""""

- Run mini scheduler in ``LocalTaskJob`` during task exit (#16289)
- Remove ``SQLAlchemy<1.4`` constraint (#16630)
- Bump Jinja2 upper-bound from 2.12.0 to 4.0.0 (#16595)
- Bump ``dnspython`` (#16698)
- Updates to ``FlaskAppBuilder`` 3.3.2+ (#17208)
- Add State types for tasks and DAGs (#15285)
- Set Process title for Worker when using ``LocalExecutor`` (#16623)
- Move ``DagFileProcessor`` and ``DagFileProcessorProcess`` out of ``scheduler_job.py`` (#16581)

Doc only changes
""""""""""""""""

- Fix inconsistencies in configuration docs (#17317)
- Fix docs link for using SQLite as Metadata DB (#17308)

Misc
""""

- Switch back http provider after requests removes LGPL dependency (#16974)

Airflow 2.1.2, 2021-07-14
-------------------------

Bug Fixes
"""""""""

- Only allow webserver to request from the worker log server (#16754)
- Fix "Invalid JSON configuration, must be a dict" bug (#16648)
- Fix ``CeleryKubernetesExecutor`` (#16700)
- Mask value if the key is ``token`` (#16474)
- Fix impersonation issue with ``LocalTaskJob`` (#16852)
- Resolve all npm vulnerabilities including bumping ``jQuery`` to ``3.5`` (#16440)

Misc
""""

- Add Python 3.9 support (#15515)
Airflow 2.1.1, 2021-07-02
-------------------------

Bug Fixes
"""""""""

- Don't crash attempting to mask secrets in dict with non-string keys (#16601)
- Always install sphinx_airflow_theme from ``PyPI`` (#16594)
- Remove limitation for elasticsearch library (#16553)
- Adding extra requirements for build and runtime of the PROD image. (#16170)
- Cattrs 1.7.0 released by the end of May 2021 break lineage usage (#16173)
- Removes unnecessary packages from setup_requires (#16139)
- Pins docutils to <0.17 until breaking behaviour is fixed (#16133)
- Improvements for Docker Image docs (#14843)
- Ensure that ``dag_run.conf`` is a dict (#15057)
- Fix CLI connections import and migrate logic from secrets to Connection model (#15425)
- Fix Dag Details start date bug (#16206)
- Fix DAG run state not updated while DAG is paused (#16343)
- Allow null value for operator field in task_instance schema(REST API) (#16516)
- Avoid recursion going too deep when redacting logs (#16491)
- Backfill: Don't create a DagRun if no tasks match task regex (#16461)
- Tree View UI for larger DAGs & more consistent spacing in Tree View (#16522)
- Correctly handle None returns from Query.scalar() (#16345)
- Adding ``only_active`` parameter to /dags endpoint (#14306)
- Don't show stale Serialized DAGs if they are deleted in DB (#16368)
- Make REST API List DAGs endpoint consistent with UI/CLI behaviour (#16318)
- Support remote logging in elasticsearch with ``filebeat 7`` (#14625)
- Queue tasks with higher priority and earlier execution_date first. (#15210)
- Make task ID on legend have enough width and width of line chart to be 100%.  (#15915)
- Fix normalize-url vulnerability (#16375)
- Validate retries value on init for better errors (#16415)
- add num_runs query param for tree refresh (#16437)
- Fix templated default/example values in config ref docs (#16442)
- Add ``passphrase`` and ``private_key`` to default sensitive field names (#16392)
- Fix tasks in an infinite slots pool were never scheduled (#15247)
- Fix Orphaned tasks stuck in CeleryExecutor as running (#16550)
- Don't fail to log if we can't redact something (#16118)
- Set max tree width to 1200 pixels (#16067)
- Fill the "job_id" field for ``airflow task run`` without ``--local``/``--raw`` for KubeExecutor (#16108)
- Fixes problem where conf variable was used before initialization (#16088)
- Fix apply defaults for task decorator (#16085)
- Parse recently modified files even if just parsed (#16075)
- Ensure that we don't try to mask empty string in logs (#16057)
- Don't die when masking ``log.exception`` when there is no exception (#16047)
- Restores apply_defaults import in base_sensor_operator (#16040)
- Fix auto-refresh in tree view When webserver ui is not in ``/`` (#16018)
- Fix dag.clear() to set multiple dags to running when necessary (#15382)
- Fix Celery executor getting stuck randomly because of reset_signals in multiprocessing (#15989)


Airflow 2.1.0, 2021-05-21
-------------------------

New Features
""""""""""""

- Add ``PythonVirtualenvDecorator`` to Taskflow API (#14761)
- Add ``Taskgroup`` decorator (#15034)
- Create a DAG Calendar View (#15423)
- Create cross-DAG dependencies view (#13199)
- Add rest API to query for providers (#13394)
- Mask passwords and sensitive info in task logs and UI (#15599)
- Add ``SubprocessHook`` for running commands from operators (#13423)
- Add DAG Timeout in UI page "DAG Details" (#14165)
- Add ``WeekDayBranchOperator`` (#13997)
- Add JSON linter to DAG Trigger UI (#13551)
- Add DAG Description Doc to Trigger UI Page (#13365)
- Add airflow webserver URL into SLA miss email. (#13249)
- Add read only REST API endpoints for users (#14735)
- Add files to generate Airflow's Python SDK (#14739)
- Add dynamic fields to snowflake connection (#14724)
- Add read only REST API endpoint for roles and permissions (#14664)
- Add new datetime branch operator (#11964)
- Add Google leveldb hook and operator (#13109) (#14105)
- Add plugins endpoint to the REST API (#14280)
- Add ``worker_pod_pending_timeout`` support (#15263)
- Add support for labeling DAG edges (#15142)
- Add CUD REST API endpoints for Roles (#14840)
- Import connections from a file (#15177)
- A bunch of ``template_fields_renderers`` additions (#15130)
- Add REST API query sort and order to some endpoints (#14895)
- Add timezone context in new ui (#15096)
- Add query mutations to new UI (#15068)
- Add different modes to sort dag files for parsing (#15046)
- Auto refresh on Tree View (#15474)
- BashOperator to raise ``AirflowSkipException`` on exit code 99 (by default, configurable) (#13421) (#14963)
- Clear tasks by task ids in REST API (#14500)
- Support jinja2 native Python types (#14603)
- Allow celery workers without gossip or mingle modes (#13880)
- Add ``airflow jobs check`` CLI command to check health of jobs (Scheduler etc) (#14519)
- Rename ``DateTimeBranchOperator`` to ``BranchDateTimeOperator`` (#14720)

Improvements
""""""""""""

- Add optional result handler callback to ``DbApiHook`` (#15581)
- Update Flask App Builder limit to recently released 3.3 (#15792)
- Prevent creating flask sessions on REST API requests (#15295)
- Sync DAG specific permissions when parsing (#15311)
- Increase maximum length of pool name on Tasks to 256 characters (#15203)
- Enforce READ COMMITTED isolation when using mysql (#15714)
- Auto-apply ``apply_default`` to subclasses of ``BaseOperator`` (#15667)
- Emit error on duplicated DAG ID (#15302)
- Update ``KubernetesExecutor`` pod templates to allow access to IAM permissions (#15669)
- More verbose logs when running ``airflow db check-migrations`` (#15662)
- When one_success mark task as failed if no success (#15467)
- Add an option to trigger a dag w/o changing conf (#15591)
- Add Airflow UI instance_name configuration option (#10162)
- Add a decorator to retry functions with DB transactions (#14109)
- Add return to PythonVirtualenvOperator's execute method (#14061)
- Add verify_ssl config for kubernetes (#13516)
- Add description about ``secret_key`` when Webserver > 1 (#15546)
- Add Traceback in LogRecord in ``JSONFormatter`` (#15414)
- Add support for arbitrary json in conn uri format (#15100)
- Adds description field in variable (#12413) (#15194)
- Add logs to show last modified in SFTP, FTP and Filesystem sensor (#15134)
- Execute ``on_failure_callback`` when SIGTERM is received (#15172)
- Allow hiding of all edges when highlighting states (#15281)
- Display explicit error in case UID has no actual username (#15212)
- Serve logs with Scheduler when using Local or Sequential Executor (#15557)
- Deactivate trigger, refresh, and delete controls on dag detail view. (#14144)
- Turn off autocomplete for connection forms (#15073)
- Increase default ``worker_refresh_interval`` to ``6000`` seconds (#14970)
- Only show User's local timezone if it's not UTC (#13904)
- Suppress LOG/WARNING for a few tasks CLI for better CLI experience (#14567)
- Configurable API response (CORS) headers (#13620)
- Allow viewers to see all docs links (#14197)
- Update Tree View date ticks (#14141)
- Make the tooltip to Pause / Unpause a DAG clearer (#13642)
- Warn about precedence of env var when getting variables (#13501)
- Move ``[celery] default_queue`` config to ``[operators] default_queue`` to re-use between executors  (#14699)

Bug Fixes
"""""""""

- Fix 500 error from ``updateTaskInstancesState`` API endpoint when ``dry_run`` not passed (#15889)
- Ensure that task preceding a PythonVirtualenvOperator doesn't fail (#15822)
- Prevent mixed case env vars from crashing processes like worker (#14380)
- Fixed type annotations in DAG decorator (#15778)
- Fix on_failure_callback when task receive SIGKILL (#15537)
- Fix dags table overflow (#15660)
- Fix changing the parent dag state on subdag clear (#15562)
- Fix reading from zip package to default to text (#13962)
- Fix wrong parameter for ``drawDagStatsForDag`` in dags.html (#13884)
- Fix QueuedLocalWorker crashing with EOFError (#13215)
- Fix typo in ``NotPreviouslySkippedDep`` (#13933)
- Fix parallelism after KubeExecutor pod adoption (#15555)
- Fix kube client on mac with keepalive enabled (#15551)
- Fixes wrong limit for dask for python>3.7 (should be <3.7) (#15545)
- Fix Task Adoption in ``KubernetesExecutor`` (#14795)
- Fix timeout when using XCom with ``KubernetesPodOperator`` (#15388)
- Fix deprecated provider aliases in "extras" not working (#15465)
- Fixed default XCom deserialization. (#14827)
- Fix used_group_ids in ``dag.partial_subset`` (#13700) (#15308)
- Further fix trimmed ``pod_id`` for ``KubernetesPodOperator`` (#15445)
- Bugfix: Invalid name when trimmed `pod_id` ends with hyphen in ``KubernetesPodOperator`` (#15443)
- Fix incorrect slots stats when TI ``pool_slots > 1`` (#15426)
- Fix DAG last run link (#15327)
- Fix ``sync-perm`` to work correctly when update_fab_perms = False (#14847)
- Fixes limits on Arrow for plexus test (#14781)
- Fix UI bugs in tree view (#14566)
- Fix AzureDataFactoryHook failing to instantiate its connection (#14565)
- Fix permission error on non-POSIX filesystem (#13121)
- Fix spelling in "ignorable" (#14348)
- Fix get_context_data doctest import (#14288)
- Correct typo in ``GCSObjectsWtihPrefixExistenceSensor``  (#14179)
- Fix order of failed deps (#14036)
- Fix critical ``CeleryKubernetesExecutor`` bug (#13247)
- Fix four bugs in ``StackdriverTaskHandler`` (#13784)
- ``func.sum`` may return ``Decimal`` that break rest APIs (#15585)
- Persist tags params in pagination (#15411)
- API: Raise ``AlreadyExists`` exception when the ``execution_date`` is same (#15174)
- Remove duplicate call to ``sync_metadata`` inside ``DagFileProcessorManager`` (#15121)
- Extra ``docker-py`` update to resolve docker op issues (#15731)
- Ensure executors end method is called (#14085)
- Remove ``user_id`` from API schema (#15117)
- Prevent clickable bad links on disabled pagination (#15074)
- Acquire lock on db for the time of migration (#10151)
- Skip SLA check only if SLA is None (#14064)
- Print right version in airflow info command (#14560)
- Make ``airflow info`` work with pipes (#14528)
- Rework client-side script for connection form. (#14052)
- API: Add ``CollectionInfo`` in all Collections that have ``total_entries`` (#14366)
- Fix ``task_instance_mutation_hook`` when importing airflow.models.dagrun (#15851)

Doc only changes
""""""""""""""""

- Fix docstring of SqlSensor (#15466)
- Small changes on "DAGs and Tasks documentation" (#14853)
- Add note on changes to configuration options (#15696)
- Add docs to the ``markdownlint`` and ``yamllint`` config files (#15682)
- Rename old "Experimental" API to deprecated in the docs. (#15653)
- Fix documentation error in `git_sync_template.yaml` (#13197)
- Fix doc link permission name (#14972)
- Fix link to Helm chart docs (#14652)
- Fix docstrings for Kubernetes code (#14605)
- docs: Capitalize & minor fixes (#14283) (#14534)
- Fixed reading from zip package to default to text. (#13984)
- An initial rework of the "Concepts" docs (#15444)
- Improve docstrings for various modules (#15047)
- Add documentation on database connection URI (#14124)
- Add Helm Chart logo to docs index (#14762)
- Create a new documentation package for Helm Chart (#14643)
- Add docs about supported logging levels (#14507)
- Update docs about tableau and salesforce provider (#14495)
- Replace deprecated doc links to the correct one (#14429)
- Refactor redundant doc url logic to use utility (#14080)
- docs: NOTICE: Updated 2016-2019 to 2016-now (#14248)
- Skip DAG perm sync during parsing if possible (#15464)
- Add picture and examples for Edge Labels (#15310)
- Add example DAG & how-to guide for sqlite (#13196)
- Add links to new modules for deprecated modules (#15316)
- Add note in Updating.md about FAB data model change (#14478)

Misc/Internal
"""""""""""""

- Fix ``logging.exception`` redundancy (#14823)
- Bump ``stylelint`` to remove vulnerable sub-dependency (#15784)
- Add resolution to force dependencies to use patched version of lodash (#15777)
- Update croniter to 1.0.x series (#15769)
- Get rid of Airflow 1.10 in Breeze (#15712)
- Run helm chart tests in parallel (#15706)
- Bump ``ssri`` from 6.0.1 to 6.0.2 in /airflow/www (#15437)
- Remove the limit on Gunicorn dependency (#15611)
- Better "dependency already registered" warning message for tasks #14613 (#14860)
- Pin pandas-gbq to <0.15.0 (#15114)
- Use Pip 21.* to install airflow officially (#15513)
- Bump mysqlclient to support the 1.4.x and 2.x series (#14978)
- Finish refactor of DAG resource name helper (#15511)
- Refactor/Cleanup Presentation of Graph Task and Path Highlighting (#15257)
- Standardize default fab perms (#14946)
- Remove ``datepicker`` for task instance detail view (#15284)
- Turn provider's import warnings into debug logs (#14903)
- Remove left-over fields from required in provider_info schema. (#14119)
- Deprecate ``tableau`` extra (#13595)
- Use built-in `cached_property` on Python 3.8 where possible (#14606)
- Clean-up JS code in UI templates (#14019)
- Bump elliptic from 6.5.3 to 6.5.4 in /airflow/www (#14668)
- Switch to f-strings using ``flynt``. (#13732)
- use ``jquery`` ready instead of vanilla js (#15258)
- Migrate task instance log (ti_log) js (#15309)
- Migrate graph js (#15307)
- Migrate dags.html javascript (#14692)
- Removes unnecessary AzureContainerInstance connection type (#15514)
- Separate Kubernetes pod_launcher from core airflow (#15165)
- update remaining old import paths of operators (#15127)
- Remove broken and undocumented "demo mode" feature (#14601)
- Simplify configuration/legibility of ``Webpack`` entries (#14551)
- remove inline tree js (#14552)
- Js linting and inline migration for simple scripts (#14215)
- Remove use of repeated constant in AirflowConfigParser (#14023)
- Deprecate email credentials from environment variables. (#13601)
- Remove unused 'context' variable in task_instance.py (#14049)
- Disable suppress_logs_and_warning in cli when debugging (#13180)


Airflow 2.0.2, 2021-04-19
-------------------------

Bug Fixes
"""""""""

* Bugfix: ``TypeError`` when Serializing & sorting iterable properties of DAGs (#15395)
* Fix missing ``on_load`` trigger for folder-based plugins (#15208)
* ``kubernetes cleanup-pods`` subcommand will only clean up Airflow-created Pods (#15204)
* Fix password masking in CLI action_logging (#15143)
* Fix url generation for TriggerDagRunOperatorLink (#14990)
* Restore base lineage backend (#14146)
* Unable to trigger backfill or manual jobs with Kubernetes executor. (#14160)
* Bugfix: Task docs are not shown in the Task Instance Detail View (#15191)
* Bugfix: Fix overriding ``pod_template_file`` in KubernetesExecutor (#15197)
* Bugfix: resources in ``executor_config`` breaks Graph View in UI (#15199)
* Fix celery executor bug trying to call len on map (#14883)
* Fix bug in airflow.stats timing that broke dogstatsd mode (#15132)
* Avoid scheduler/parser manager deadlock by using non-blocking IO (#15112)
* Re-introduce ``dagrun.schedule_delay`` metric (#15105)
* Compare string values, not if strings are the same object in Kube executor(#14942)
* Pass queue to BaseExecutor.execute_async like in airflow 1.10 (#14861)
* Scheduler: Remove TIs from starved pools from the critical path. (#14476)
* Remove extra/needless deprecation warnings from airflow.contrib module (#15065)
* Fix support for long dag_id and task_id in KubernetesExecutor (#14703)
* Sort lists, sets and tuples in Serialized DAGs (#14909)
* Simplify cleaning string passed to origin param (#14738) (#14905)
* Fix error when running tasks with Sentry integration enabled. (#13929)
* Webserver: Sanitize string passed to origin param (#14738)
* Fix losing duration < 1 secs in tree (#13537)
* Pin SQLAlchemy to <1.4 due to breakage of sqlalchemy-utils (#14812)
* Fix KubernetesExecutor issue with deleted pending pods (#14810)
* Default to Celery Task model when backend model does not exist (#14612)
* Bugfix: Plugins endpoint was unauthenticated (#14570)
* BugFix: fix DAG doc display (especially for TaskFlow DAGs) (#14564)
* BugFix: TypeError in airflow.kubernetes.pod_launcher's monitor_pod (#14513)
* Bugfix: Fix wrong output of tags and owners in dag detail API endpoint (#14490)
* Fix logging error with task error when JSON logging is enabled (#14456)
* Fix statsd metrics not sending when using daemon mode (#14454)
* Gracefully handle missing start_date and end_date for DagRun (#14452)
* BugFix: Serialize max_retry_delay as a timedelta (#14436)
* Fix crash when user clicks on  "Task Instance Details" caused by start_date being None (#14416)
* BugFix: Fix TaskInstance API call fails if a task is removed from running DAG (#14381)
* Scheduler should not fail when invalid ``executor_config`` is passed (#14323)
* Fix bug allowing task instances to survive when dagrun_timeout is exceeded (#14321)
* Fix bug where DAG timezone was not always shown correctly in UI tooltips (#14204)
* Use ``Lax`` for ``cookie_samesite`` when empty string is passed (#14183)
* [AIRFLOW-6076] fix ``dag.cli()`` KeyError (#13647)
* Fix running child tasks in a subdag after clearing a successful subdag (#14776)

Improvements
""""""""""""

* Remove unused JS packages causing false security alerts (#15383)
* Change default of ``[kubernetes] enable_tcp_keepalive`` for new installs to ``True`` (#15338)
* Fixed #14270: Add error message in OOM situations (#15207)
* Better compatibility/diagnostics for arbitrary UID in docker image (#15162)
* Updates 3.6 limits for latest versions of a few libraries (#15209)
* Adds Blinker dependency which is missing after recent changes (#15182)
* Remove 'conf' from search_columns in DagRun View (#15099)
* More proper default value for namespace in K8S cleanup-pods CLI (#15060)
* Faster default role syncing during webserver start (#15017)
* Speed up webserver start when there are many DAGs (#14993)
* Much easier to use and better documented Docker image (#14911)
* Use ``libyaml`` C library when available. (#14577)
* Don't create unittest.cfg when not running in unit test mode (#14420)
* Webserver: Allow Filtering TaskInstances by queued_dttm (#14708)
* Update Flask-AppBuilder dependency to allow 3.2 (and all 3.x series) (#14665)
* Remember expanded task groups in browser local storage (#14661)
* Add plain format output to cli tables (#14546)
* Make ``airflow dags show`` command display TaskGroups (#14269)
* Increase maximum size of ``extra`` connection field. (#12944)
* Speed up clear_task_instances by doing a single sql delete for TaskReschedule (#14048)
* Add more flexibility with FAB menu links (#13903)
* Add better description and guidance in case of sqlite version mismatch (#14209)

Doc only changes
""""""""""""""""

* Add documentation create/update community providers (#15061)
* Fix mistake and typos in airflow.utils.timezone docstrings (#15180)
* Replace new url for Stable Airflow Docs (#15169)
* Docs: Clarify behavior of delete_worker_pods_on_failure (#14958)
* Create a documentation package for Docker image (#14846)
* Multiple minor doc (OpenAPI) fixes (#14917)
* Replace Graph View Screenshot to show Auto-refresh (#14571)

Misc/Internal
"""""""""""""

* Import Connection lazily in hooks to avoid cycles (#15361)
* Rename last_scheduler_run into last_parsed_time, and ensure it's updated in DB (#14581)
* Make TaskInstance.pool_slots not nullable with a default of 1 (#14406)
* Log migrations info in consistent way (#14158)

Airflow 2.0.1, 2021-02-08
-------------------------

Bug Fixes
"""""""""

- Bugfix: Return XCom Value in the XCom Endpoint API (#13684)
- Bugfix: Import error when using custom backend and ``sql_alchemy_conn_secret`` (#13260)
- Allow PID file path to be relative when daemonize a process (scheduler, kerberos, etc) (#13232)
- Bugfix: no generic ``DROP CONSTRAINT`` in MySQL during ``airflow db upgrade`` (#13239)
- Bugfix: Sync Access Control defined in DAGs when running ``sync-perm`` (#13377)
- Stop sending Callback Requests if no callbacks are defined on DAG (#13163)
- BugFix: Dag-level Callback Requests were not run (#13651)
- Stop creating duplicate Dag File Processors (#13662)
- Filter DagRuns with Task Instances in removed State while Scheduling (#13165)
- Bump ``datatables.net`` from 1.10.21 to 1.10.22 in /airflow/www (#13143)
- Bump ``datatables.net`` JS to 1.10.23 (#13253)
- Bump ``dompurify`` from 2.0.12 to 2.2.6 in /airflow/www (#13164)
- Update minimum ``cattrs`` version (#13223)
- Remove inapplicable arg 'output' for CLI pools import/export (#13071)
- Webserver: Fix the behavior to deactivate the authentication option and add docs (#13191)
- Fix: add support for no-menu plugin views (#11742)
- Add ``python-daemon`` limit for Python 3.8+ to fix daemon crash (#13540)
- Change the default celery ``worker_concurrency`` to 16 (#13612)
- Audit Log records View should not contain link if ``dag_id`` is None (#13619)
- Fix invalid ``continue_token`` for cleanup list pods (#13563)
- Switches to latest version of snowflake connector (#13654)
- Fix backfill crash on task retry or reschedule (#13712)
- Setting ``max_tis_per_query`` to ``0`` now correctly removes the limit (#13512)
- Fix race conditions in task callback invocations (#10917)
- Fix webserver exiting when gunicorn master crashes (#13518)(#13780)
- Fix SQL syntax to check duplicate connections (#13783)
- ``BaseBranchOperator`` will push to xcom by default (#13704) (#13763)
- Fix Deprecation for ``configuration.getsection`` (#13804)
- Fix TaskNotFound in log endpoint (#13872)
- Fix race condition when using Dynamic DAGs (#13893)
- Fix: Linux/Chrome window bouncing in Webserver
- Fix db shell for sqlite (#13907)
- Only compare updated time when Serialized DAG exists (#13899)
- Fix dag run type enum query for mysqldb driver (#13278)
- Add authentication to lineage endpoint for experimental API (#13870)
- Do not add User role perms to custom roles. (#13856)
- Do not add ``Website.can_read`` access to default roles. (#13923)
- Fix invalid value error caused by long Kubernetes pod name (#13299)
- Fix DB Migration for SQLite to upgrade to 2.0 (#13921)
- Bugfix: Manual DagRun trigger should not skip scheduled runs (#13963)
- Stop loading Extra Operator links in Scheduler (#13932)
- Added missing return parameter in read function of ``FileTaskHandler`` (#14001)
- Bugfix: Do not try to create a duplicate Dag Run in Scheduler (#13920)
- Make ``v1/config`` endpoint respect webserver ``expose_config`` setting (#14020)
- Disable row level locking for Mariadb and MySQL <8 (#14031)
- Bugfix: Fix permissions to triggering only specific DAGs (#13922)
- Fix broken SLA Mechanism (#14056)
- Bugfix: Scheduler fails if task is removed at runtime (#14057)
- Remove permissions to read Configurations for User and Viewer roles (#14067)
- Fix DB Migration from 2.0.1rc1

Improvements
""""""""""""

- Increase the default ``min_file_process_interval`` to decrease CPU Usage (#13664)
- Dispose connections when running tasks with ``os.fork`` & ``CeleryExecutor`` (#13265)
- Make function purpose clearer in ``example_kubernetes_executor`` example dag (#13216)
- Remove unused libraries - ``flask-swagger``, ``funcsigs`` (#13178)