# Apache Airflow 2.9.0 — Release & Upgrade Intelligence
- **Product:** Apache Airflow (https://airflow.apache.org)
- **Version:** 2.9.0
- **Released:** Apr 08, 2024
- **Impact Score:** 5/10
- **Breaking Changes:** Not verified
- **Canonical Analysis:** https://changelogs.us/airflow/updates/2.9.0/

## Executive Summary (TL;DR)
Apache Airflow 2.9.0. Source highlight: Following Listener API methods are considered stable and can be used for production system (were experimental feature in older Airflow versions) (#36376):

## New Features
- ``on_dag_run_running``
- ``on_dag_run_success``
- ``on_dag_run_failed``
- ``on_task_instance_running``
- ``on_task_instance_success``
- ``on_task_instance_failed``

## Improvements
- More human friendly "show tables" output for db cleanup (#38654)
- Improve trigger assign_unassigned by merging alive_triggerer_ids and get_sorted_triggers queries (#38664)
- Clean up unused triggers in a single query for all dialects except MySQL (#38663)
- Update Confirmation Logic for Config Changes on Sensitive Environments Like Production (#38299)
- Improve datasets graph UX (#38476)
- Only show latest dataset event timestamp after last run (#38340)

## Bug Fixes
- Only iterate over the items if debug is enabled for DagFileProcessorManager (#36761)
- Load providers configuration when gunicorn workers start (#38795)
- Fix grid header rendering (#38720)
- Add a task instance dependency for mapped dependencies (#37498)
- Improve stability of remove_task_decorator function (#38649)
- Mark more fields on API as dump-only (#38616)
