Apache Airflow 2.9.3stable Released Jul 16, 2024
Impact Score: 5/10

Apache Airflow 2.9.3

Source available โ€” automated, not human-reviewed

Component: airflow ยท Channel: stable. Automated analysis, not a compatibility certification. How this works.

Analysis updated: 2026-11-01.

Compatibility not verified โ€” check source notes
๐Ÿ“„ .MD
โšก Executive Summary (TL;DR)

Apache Airflow 2.9.3. Source highlight: Time unit for ``scheduled_duration`` and ``queued_duration`` changed (#37936)

Who Does This Impact? (Role-Based Analysis)

๐Ÿ’ป Software Engineers & Devs

Check the source notes against the package and APIs you use before upgrading.

๐Ÿ“Š Product & Engineering Leads

Use the documented changes to assess relevance to your product; release frequency alone is not a quality measure.

โš™๏ธ DevOps & Security

Verify the target version, runtime requirements and rollback procedure in the official documentation.

โœจ New Features & Capabilities (6)

  • Add notes about passing secrets via environment variables (#40519)
  • Add more precise description of masking sensitive field names (#40512)
  • Add slightly more detailed guidance about upgrading to the docs (#40227)
  • Add warning to deprecated api docs that access control isn't applied (#40129)
  • Add a note and an example clarifying the usage of DAG-level params (#40541)
  • Add warning about the PostgresOperator being deprecated (#40662)

๐Ÿ”ง Bug Fixes & Patches (6)

  • Fix calendar view scroll (#40458)
  • Validating provider description for urls in provider list view (#40475)
  • Fix compatibility with old MySQL 8.0 (#40314)
  • Fix dag (un)pausing won't work on environment where dag files are missing (#40345)
  • Extra being passed to SQLalchemy (#40391)
  • Handle unsupported operand int + str when value of tag is int (job_id) (#40407)
๐Ÿ“„ View Raw Release Notes (Original Developer Log)
## Significant Changes ### Time unit for ``scheduled_duration`` and ``queued_duration`` changed (#37936) ``scheduled_duration`` and ``queued_duration`` metrics are now emitted in milliseconds instead of seconds. By convention all statsd metrics should be emitted in milliseconds, this is later expected in e.g. ``prometheus`` statsd-exporter. ### Support for OpenTelemetry Metrics is no longer "Experimental" (#40286) Experimental support for OpenTelemetry was added in 2.7.0 since then fixes and improvements were added and now we announce the feature as stable. ## Bug Fixes - Fix calendar view scroll (#40458) - Validating provider description for urls in provider list view (#40475) - Fix compatibility with old MySQL 8.0 (#40314) - Fix dag (un)pausing won't work on environment where dag files are missing (#40345) - Extra being passed to SQLalchemy (#40391) - Handle unsupported operand int + str when value of tag is int (job_id) (#40407) - Fix TriggeredDagRunOperator triggered link (#40336) - Add ``[webserver]update_fab_perms`` to deprecated configs (#40317) - Swap dag run link from legacy graph to grid with graph tab (#40241) - Change ``httpx`` to ``requests`` in ``file_task_handler`` (#39799) - Fix import future annotations in venv jinja template (#40208) - Ensures DAG params order regardless of backend (#40156) - Use a join for TI notes in TI batch API endpoint (#40028) - Improve trigger UI for string array format validation (#39993) - Disable jinja2 rendering for doc_md (#40522) - Skip checking sub dags list if taskinstance state is skipped (#40578) - Recognize quotes when parsing urls in logs (#40508) ## Doc Only Changes - Add notes about passing secrets via environment variables (#40519) - Revamp some confusing log messages (#40334) - Add more precise description of masking sensitive field names (#40512) - Add slightly more detailed guidance about upgrading to the docs (#40227) - Metrics allow_list complete example (#40120) - Add warning to deprecated api docs that access control isn't applied (#40129) - Simpler command to check local scheduler is alive (#40074) - Add a note and an example clarifying the usage of DAG-level params (#40541) - Fix highlight of example code in dags.rst (#40114) - Add warning about the PostgresOperator being deprecated (#40662) - Updating airflow download links to CDN based links (#40618) - Fix import statement for DatasetOrTimetable example (#40601) - Further clarify triage process (#40536) - Fix param order in PythonOperator docstring (#40122) - Update serializers.rst to mention that bytes are not supported (#40597) ## Miscellaneous - Upgrade build installers and dependencies (#40177) - Bump braces from 3.0.2 to 3.0.3 in /airflow/www (#40180) - Upgrade to another version of trove-classifier (new CUDA classifiers) (#40564) - Rename "try_number" increments that are unrelated to the airflow concept (#39317) - Update trove classifiers to the latest version as build dependency (#40542) - Upgrade to latest version of hatchling as build dependency (#40387) - Fix bug in ``SchedulerJobRunner._process_executor_events`` (#40563) - Remove logging for "blocked" events (#40446)