Repository navigation
Status of testing of Apache Airflow 3.4.0rc1 #75865
Copy link
Copy link
Open
Labels
kind:metaHigh-level information important to the communityHigh-level information important to the communitytesting statusStatus of testing releasesStatus of testing releases
Description
We are kindly requesting that contributors to Apache Airflow RC 3.4.0rc1 help test the RC.
Please let us know by checking the box / commenting if the change is addressed in the latest RC.
Significant Changes
Full details (migration notes, changed endpoints, behavioural changes) for each item are in the 3.4.0 release notes. The entries below are for test-tracking only.
- Task Loops (Remove the task_map table, folding its length into xcom.mapped_length #73005, Keep retried task attempts and their data under the attempt UUID #74222, Introduce the (internal/db level) concept of "dynamic regions" for TIs #74275, Pin loop definitions and carry region coordinates through task execution #74345): @ashb
- Dag Importer for non-Python Dags ([AIP-85] Add Dag importers to Task SDK in preparation for rewiring #72369, Discover a bundle's Dag definitions through the importer registry #73728, Parse Dag files through the Task SDK importers #73853, Discover Dag definitions through the Task SDK importers #74020, YAML Dag file parser #74084, Document the experimental Dag importer interface #74333, Implement AIP-85 YAML importer based on the parser #74586): @dilnazanlid @uranusjr
- Unify executor workload queues under
BaseExecutor.executor_queues(Unify executor workload queues #63491): @anishgirianish - psycopg3 is now the default Postgres driver (Switch the default async Postgres driver from asyncpg to psycopg3 (core) #68496): @Dev-iL
- Asset-triggered Dags create one run per event by default (Make asset event batching opt-in #68517): @renat-sagut
- Custom graph colors return via
ui_colorandui_fgcolor(Restore graph task and group coloring via Chakra palette tokens #68760): @pierrejeambrun -
validate_keynow raisesValueErrorinstead ofAirflowException(Refactor validate_key to raise ValueError instead of AirflowException #68890): @23tae - The deprecated
Datasetalias has been removed from theairflowmodule (Remove deprecated dataset aliases #70154): @viiccwen - Audit log rows not tied to a Dag now require the
AUDIT_LOGS_ALLview (Gate audit log rows not tied to a Dag on a dedicated AccessView #70759): @potiuk - Team names must now be lower case, and cannot contain two consecutive underscores (Require team names to be lower case with no doubled underscores #70886): @potiuk
- Changes to how pending asset events trigger Dag runs (Reference asset events from asset_dag_run_queue #70972): @uranusjr
- Callbacks now redeem a single-use token before they run (Add single-use callback token for deadline callback context fetch #71192): @seanghaeli
- Clearing a task now discards its task state store entries by default (Discard the task state values for a task instance when it is cleared #72100): @amoghrajesh
-
[core] execute_tasks_new_python_interpreternow applies to Airflow 3 task processes (Allow opting into fork+exec task processes via execute_tasks_new_python_interpreter #72164): @gang-zh - Gracefully pause Dags by draining active runs (Add draining state for graceful Dag pausing #72407, Add airflowctl dags drain command #73225, UI: Add bulk pause, drain and unpause actions to the Dags list #73055, Allow explicit runs to drain a paused Dag #73763): @dheerajturaga
- Reparsing a file with no registered Dag now requires the
REPARSE_ALLview (Add reparse button to the Dag import errors modal #72896): @pierrejeambrun - Removed the
--file-iooption from theairflow infocommand (Remove airflow info--file-ioasfile.iodropped anonymous uploads #73054): @kaxil - Task heartbeats are no longer retried by
[workers] execution_api_retries(Don't retry task heartbeats according to[workers] execution_api_retries#73244): @nickstenning - Deadline alert callbacks validated at parse time; numeric intervals deprecated (Add type-checking guards to DeadlineAlert init #73294): @ferruzzi
- The
POST /assets/{asset_id}/materializeendpoint now requires a JSON request body (Require a request body on the asset materialize endpoint #73328): @pierrejeambrun - TaskInstance try numbers now increase before the next try starts (Keep task attempt UUIDs and try numbers aligned #73554): @ashb
- Deprecate cyclic TaskGroup dependencies (Deprecate cyclic TaskGroup dependencies #73746): @dheerajturaga
- Language SDK coordinators load task handlers from a Dag bundle (Replace coordinator artifact roots with task_handler_bundle_name #73970): @jason810496
- Support for Python 3.10 has been removed (Drop Python 3.10 from CI, Breeze and the container images #74151): @shahar1
- Deprecate the
required_kwargsattribute for custom deadline references (Pass Dag runs directly to Deadline references #70714): @imrichardwu - Task SDK API client trusts the system certificate store instead of
certifi(Migrate Task SDK tohttpx2#73116): @zach-overflow - Older workers can no longer resume deferred tasks whose
next_kwargshold custom classes (Only rebuild built-in value types when converting next_kwargs for older workers #73577): @potiuk - Deadline Alert callback kwargs are decoded where the callback runs (Decode deadline callback kwargs where the callback runs #74830): @potiuk
- Custom XCom backends that override
serialize_valuemust implementstore_valueto support task loops (Let XCom backends tell loop iterations apart through store_value #74858): @ashb -
airflow.utils.emailis deprecated in favor of the SMTP provider (Deprecate airflow.utils.email in favor of the SMTP provider #75414): @shivaam
New Features
- UI: Show task group states as stacked cards in the Grid view (#75442): @kevinhongzl
- Let plugins add their own actions to Dag, run and task instance rows (#75427): @bbovenzi
- TS SDK: Reject blank edge labels and label task edges into groups (#75190): @FrankYang0529
- Expose task instance loop pass and expansion size to listeners (#75132): @kacpermuda
- Add a Duplicate action to the Connections list (#75110): @pierrejeambrun
- Let retry policies reschedule a task without using a retry (#74993): @vatsrahul1001
- Let plugin views be scoped to specific Assets (#74992): @vatsrahul1001
- Add Map Index search to dag breadcrumb (#74893): @bbovenzi
- UI: Show secondary states of mapped tasks in the Grid view (#74883): @kevinhongzl
- Allow loop gates to add human-readable decisions (#74806): @ashb
- Java SDK: Let a native Java Dag set one queue for all its tasks (#74538): @jason810496
- Java SDK: Add edge labels to native Dags (#74523): @FrankYang0529
- Add asset ID filtering to
airflow db clean(#74498): @hussein-awala - TS SDK: Add edge labels with label() (#74494): @guan404ming
- Add dag version lookup on get task endpoint (#74365): @bbovenzi
- Add Logical Date column to the Runs table (#74340): @dsuhinin
- UI: Add a Dag Run ID column to the Task Instances list (#74316): @yuseok89
- UI: Add duration filter to DAG Backfills tab (#74202): @ydsakshi
- Add a user setting for the default search match mode (#74021): @pierrejeambrun
- Add URL param support to calendar view (#73237) (#73762): @basantjamwal
- UI: Add team filter to Human-in-the-loop task instances listing (#73726): @vincbeck
- add bundle_name tags to missing dag processor metrics (#73717): @samraj2k
- Add deadline callback log visibility to the Dag Run view in UI (#73580): @seanghaeli
- Add fab-oauth meta-package extra (#73565): @schizophrenicmaniac
- Allow a Job to be associated with several teams (#73561): @vincbeck
- UI: Add time range filtering to the Gantt view (#73555): @wiasliaw
- Add
ChainRetryPolicyto compose retry policies in order (#73508): @kaxil - Add task state store API to the Java SDK (#73464): @Andrushika
- UI: Add a default preference for expanded task groups (#73429): @ucaeon
- Add task state store support to the Go SDK task client (#73420): @cool9850311
- UI: Add team column and filter to the jobs list (#73295): @vincbeck
- Add SetVariable and DeleteVariable to the Go SDK task client (#73084): @henry3260
- Allow template-field copies into StartTriggerArgs in operator init (#73040): @shahar1
- Allow plugins to add or override UI translations (#72648): @pierrejeambrun
- Support multi-column sort in the Dags list table (#72558): @Andrushika
- Add dry-run mode to teams sync (#72494): @SameerMesiah97
- Add Has Events filter to Assets search (#72460): @jasperjonkhans
- UI: Add 'Mark as Skipped' option to Task Instance actions (#72425): @ccoliu
- UI: Add toggle to show or hide log levels in task logs (#72363): @PolitePp
- Add async Variable methods (aget, aset, adelete, akeys) (#72329): @dabla
- UI: Add team column and filter to the XComs list (#72158): @vincbeck
- UI: Add team column and filter to the deadlines list (#72060): @vincbeck
- Add integrity metadata to TypeScript bundles (#72046): @shivaam
- Multi-Team: Add teams inspect CLI command to display team resources (#72036): @SameerMesiah97
-
is_scheduledREST API parameter (#72029): @RNHTTR - Allow Variable.get to reuse the caller's database session (#71968): @ferruzzi
- UI: Add team column and filter to the audit log (#71916): @vincbeck
- Make the scheduler Dag cache size and TTL configurable (#71816): @jason810496
- Support a regex for the API's CORS allowed origins (#71778): @pierrejeambrun
- CLI: Add --limit flag to airflow dags list-runs (#71729): @dkranchii
- Add SSL cipher list option to the api server (#71645): @ColtenOuO
- Add ConnectionNotFoundError to the TypeScript SDK (#71375): @jason810496
- Add preset filters to the Dags list page (#71368): @pierrejeambrun
- Add Dag ID filtering to Assets search (#70971): @shivaam
- Allow filtering the Dag runs list by Dag tags (#70861): @Aaryan123456679
- Support DagBundle based deployment for Coordinator (#70805): @jason810496
- Add a user settings page for cross-page UI defaults (#70687): @pierrejeambrun
- Support a Unix Domain Socket for the metrics clients (#70517): @sortega
- UI: Add a time-window scope to the Dags list run state filter (#70470): @yuseok89
- UI: Add Select Recent Configurations dropdown to Trigger Dag form (#70413): @josix
- UI: Add a slowest tasks chart to the Dag Overview (#70305): @eddiesr93
- Add task log message when the Execution API is unreachable (#70290): @karenhsieh75
- UI: Add team column and filter to Dag Run and Task Instance lists (#70241): @vincbeck
- Support schema-qualified table names in db clean (#70147): @seanmuth
- UI: Add team column and filter to Dag list page (#70028): @vincbeck
- Add React plugin support to Dag and task overviews (#69992): @shaealh
- Add Asset Tab plugin (#69986): @bbovenzi
- Add serialized Dag version diff engine (#69864): @ephraimbuddy
- UI: Add timetable type filter to Dag list (#69728): @shivaam
- Allow embedding a Dag run in an external trace via run conf (#69633): @dstandish
- Add support for forwarding CeleryExecutor task logs to stdout (#69597): @jayachandrakasarla
- Add deadlines to Calendar Tab (#69559): @imrichardwu
- Add team_name attribute to plugins for multi-team (#69502): @o-nikolas
- Add exact-match uri filter to GET /assets endpoint (#69489): @seanmuth
- Add runtime DagRun note updates (#69403): @hkc-8010
- Add indexes on serialized_dag and dag_code (#69391): @justinpakzad
- Add streaming task log support to BaseExecutor and FileTaskHandler (#69299): @jason810496
- Add airflow-ts-pack bundle build tool for TypeScript SDK (#69295): @guan404ming
- UI: Allow scoping plugin tabs to specific Dags and tasks (#69148): @dheerajturaga
- Add metrics for how often a dag gets serialised (#68906): @Ei-Sandi
- Allow forcing trace head-sampling per DAG run via conf (#68860): @dstandish
- Add Calendar Deadlines API and Data Models (#68604): @imrichardwu
- Add a Node.js coordinator for running TypeScript Dags (#68548): @shivaam
- Add async task store accessors for async tasks (#68232): @guan404ming
- Add scheduler observability metrics (#68068): @safaehar
- Add extra field filtering for asset events (#64611): @hussein-awala
- Add partition_key and partition_key_regexp_pattern filters for asset events (#64610): @hussein-awala
- Add
AssetAndTimeScheduletimetable (#58543): @aaron-y-chen
Bug Fixes
- UI: Fix a crash caused by an unresolvable Windows PT timezone (#75723): @basantjamwal
- UI: Stop keyboard shortcuts firing while typing in a Monaco editor (#75684): @arnavsingh0418
- UI: Fix slow pending Dag run checks on large databases (#75674): @yuseok89
- UI: Fix labels that render as raw translation keys (#75326): @Pushkal-Gupta
- Let listeners see the end date of a skipped task instance (#75685): @kacpermuda
- Refuse Human-in-the-Loop responses once the task stopped waiting (#75645): @Lee-W
- TS SDK: Reject a blank queue in Dag and task specs (#75573): @guan404ming
- Fix scheduler crash when retrying a task that timed out or was killed externally (#75472): @kaxil
- Fix task loop iteration log links pointing to a nonexistent page (#75458): @kacpermuda
- Go SDK: Fail a task whose return-value XCom push fails (#75443): @jason810496
- UI: Fix visual and console-error bugs in the Dag list and details pages (#75418): @bbovenzi
- Decide the
min_one_successtrigger rule per index in mapped task groups (#75417): @shahar1 - Return a 5xx response on a database deadlock when updating task state (#75368): @Lee-W
- Run team tasks on the team executor when named by class or path (#75362): @o-nikolas
- Fix task instance filtering for null start dates (#75321): @pierrejeambrun
- UI: Keep the multiselect filter pill's focus ring visible (#75307): @pierrejeambrun
- UI: Show errors when the task clear confirmation check fails (#75269): @anzinmhd
- Skip scheduling tasks when their Dag cannot be deserialized (#75263): @abhijeets25012-tech
- Read a team's running task logs through the team's executor (#75255): @seanghaeli
- Keep the token cookie set by a route in
JWTRefreshMiddleware(#75217): @stegololz - UI: Scope the partitioned Dag run asset list to readable assets (#75213): @henry3260
- UI: Reveal selected Dag folders when names contain pipes (#75196): @himanshuchawla0807-gif
- UI: Show a label instead of a broken link for hidden assets (#75178): @henry3260
- Show source code lines in task log tracebacks (#75100): @souradeep07
- Fix
Trigger.clean_unusedrejecting a caller-provided session (#75096): @kaxil - Reserve graph header width for loop-group iteration badge (#75095): @vatsrahul1001
- Keep Dag folder selection distinct across bundle names (#75080): @himanshuchawla0807-gif
- Keep parent Dag folders collapsed after one click (#75079): @himanshuchawla0807-gif
- Reject non-positive
max_active_runswhen creating a backfill (#75071): @mattwang44 - TS SDK: Fix "Dynamic require" error for CommonJS packages in
airflow-ts-pack(#75067): @Andrushika - Fix 500 when ordering the Dag list by state or start_date (#75025): @Pushkal-Gupta
- Run the Kerberos ticket renewer without metadata database checks (#75000): @himanshuchawla0807-gif
- Fix serialization of datetimes with a fixed UTC offset (#74922): @justinpakzad
- Reset Dag autoregistration state when a Python Dag file fails to load (#74911): @shahar1
- Reject blank pool names and Variable keys in the REST API (#74896): @Pushkal-Gupta
- Resolve a trigger's XCom requests as its deferred task instance (#74868): @ashb
- Fix JWT token not refreshed when token expires mid-request (#74865): @ashb
- Do not warn about bare postgresql:// metadata DB URLs (#74863): @jedcunningham
- Fix dynamically mapped tasks never running on scheduled Dag runs (#74861): @vatsrahul1001
- Speed up API server requests by keeping JWT checks off the event loop (#74856): @safaehar
- Keep
.airflowignorerules when the Dags folder symlink is switched (#74853): @rammmaa - Match camelCase keys against sensitive field names in masker (#74840): @potiuk
- Scope asset-wide queued event deletion to editable Dags (#74839): @potiuk
- Keep queued connection tests from overwriting newer connections (#74837): @potiuk
- Scope asset Dag and task references to readable Dags (#74836): @potiuk
- Reject reserved serialization keys in Dag run conf (#74834): @potiuk
- Fix Dag version diff max-changes border, limit wording and duplicate count (#74818): @jedcunningham
- Java SDK: Send log timestamps in UTC (#74783): @FrankYang0529
- Fix Dag list run badges and counters not refreshing after completion (#74734): @anzinmhd
- UI: Fix clearing a task instance doing nothing after Confirm (#74725): @kaxil
- Report a Dag whose timetable fails to load as an import error (#74709): @Pebble32
- UI: Keep JSON text in string HITL params instead of showing [object Object] (#74702): @kaxil
- Refuse a HITL response for a request the task has since replaced (#74688): @kaxil
- Fix ORM models failing to configure in processes that skip database setup (#74642): @kaxil
- Stop the secrets backend lookup from importing the task runner outside tasks (#74641): @kaxil
- Go SDK: pack a bundle that registers no Dags at pack time (#74637): @jason810496
- Fix language SDK Dag parsing failing under pydantic 2.14 (#74628): @Dev-iL
- Fix 400 and 500s on POST /connections/defaults in multi-team mode (#74615): @Pushkal-Gupta
- Fix clearing with upstream and downstream selecting unrelated tasks (#74548): @sjyangkevin
- Keep the scheduler running when a queued run's Dag fails to deserialize (#74499): @Pebble32
- UI: Fix the Dags list showing an error page and reduce unnecessary re-renders (#74426): @bbovenzi
- Fix plugin applies_to scoping (#74425): @bbovenzi
- Fix /ui/dags recent-runs query degradation on large, skewed dag_run tables (#74401): @pickfire
- Fix XCom query in not_previously_skipped_dep to use xcom_entity (#74377): @aaron-y-chen
- Fix short-circuit in a mapped task group not skipping later tasks (#74283): @kaxil
- Make
ZIP_REGEXcase-insensitive to match .ZIP archives (#74269): @Subham-KRLX - Clear language SDK task XComs in the coordinator when a try starts (#74221): @FrankYang0529
- Java SDK: Reject byte arrays instead of letting the task hang (#74218): @FrankYang0529
- UI : Fix duplicate "From" label on DAG backfill filters (#74189): @ydsakshi
- Improve LocalExecutor bookkeeping: correctly add tasks to the
runninglist (#74142): @ashb - UI: Fix XCom list crash when a value request fails (#74131): @Jonghyun-An
- Fix date range filter inputs committing on every keystroke (#74011): @liwenjie200543
- Fix short-circuit not skipping already expanded mapped tasks (#73960): @kaxil
- Fix short-circuit inside a mapped task group not skipping downstream (#73959): @kaxil
- Fix task clear and callback bundles after code-only Dag changes (#73915): @dheerajturaga
- UI: Fix external plugin nav links not navigating on click (#73913): @vaishsriram
- Clear retry policy state when a task instance is cleared (#73889): @amoghrajesh
- Correctly shutdown async sessions on exit (#73838): @ashb
- Go SDK: Stop log attributes from displacing standard log fields (#73820): @henry3260
- API: Translate domain ValueError in Task State Store route (#73753): @Kaap10
- Filter jobs API
is_alivein SQL so pagination stays correct (#73684): @vincbeck - Guard
register_at_forkin shared stats for Windows compatibility (#73680): @Adityakk9031 - Fix boolean value of start date used in url start_date_gte filter (#73676): @tirkarthi
- Stop a commented-out
executable_resumablefrom marking a module durable (#73607): @amoghrajesh - Fix square corner on fully filled dashboard History bars (#73543): @choo121600
- Fix empty audit log
dag_idforDAG.cli()subcommands (#73379): @Eason09053360 - Fix CLI --bundle-name finding no Dags in Git bundles (#73377): @Eason09053360
- Fix airflow plugins and dags pause printing prose with --output json (#73270): @ColtenOuO
- Fix 500 from POST
/auth/tokenon a request body it cannot parse (#73258): @kaxil - Fix slow task-log scrolling by memoizing useLogGroups' visible-items index (#73252): @udsy19
- Fix 500 from the audit logger on a request body it cannot parse (#73226): @kaxil
- Stop reporting components as degraded after an instance restart (#73222): @vincbeck
- Fix dashboard stats cards navigating to a 404 page (#73178): @choo121600
- Fix airflow db clean silently skipping three tables when scoped to Dags (#73173): @kaxil
- Stop the scheduler creating Dag runs for paused partitioned-asset Dags (#73151): @kaxil
- Fix Dags staying blocked by max_active_runs until the next parse (#73032): @FrankYang0529
- Fix airflow standalone announcing readiness before the API server is up (#73025): @Eason09053360
- Hide assets the caller may not read from the UI dependencies graph (#73008): @henry3260
- Fix airflow teams list --output json printing prose when no teams exist (#72945): @Eason09053360
- Fix
tasks clear --task-regexmatching as a plain substring (#72941): @Eason09053360 - Avoid a full asset table scan per request in simple auth manager (#72934): @Lee-W
- Fix Dag callbacks dropped when bundle versioning is disabled (#72930): @ephraimbuddy
- Stop one malformed provider from breaking discovery for all providers (#72854): @kaxil
- Fix backfill DagRuns being permanently starved from scheduling (#72730): @seanmuth
- Fix airflow db check reporting one fewer retry than it will make (#72708): @Eason09053360
- Fix airflow dags list --columns help showing wrong default columns (#72607): @Eason09053360
- UI: Render Arabic durations with the correct plural form (#72604): @baha-bouali
- Fix XCom slice endpoint for crossed bounds (#72584): @fat-catTW
- Fix the
dag_processing.last_durationtiming metric reporting the wrong value (#72553): @jeff3071 - Stop emitting the legacy first_task_scheduling_delay metric twice (#72512): @FrankYang0529
- Fix Dag metrics dropped when a tag contains invalid characters (#72364): @FrankYang0529
- Fix misleading error for malformed version in airflow db downgrade (#72331): @henry3260
- Fix timedelta serde to accept int payloads (#72326): @anmolxlight
- Fix plugin registration returning early on duplicate names in Task SDK (#72253): @olmaks
- Redact secrets written through
RedactedIO.writelines()(#72063): @MahathirMohammadShuvo - Fix Dag run filtering for null start dates (#71654): @fat-catTW
- Fix
map_index_templatefailing for numeric-looking labels withrender_template_as_native_obj(#71592): @Prajwal7842 - Keep the MeterProvider configured via OTEL_CONFIG_FILE (#71529): @1fanwang
- Fix Asset Event table titles showing a raw translation key (#71443): @pierrejeambrun
- Fix executor validation error referencing non-existent [core] executors (#71336): @roshanprabu
- Fix MySQL metadata database failing when only PyMySQL is installed (#71251): @1fanwang
- Fix OpenSearch remote logging crash if port is empty (#71170): @FrankYang0529
- Fix duplicate pending Dag runs for the same asset partition key (#71074): @anmolxlight
- Fix /ui/assets picking a stale "last event" under concurrent asset writes (#71047): @takayoshi-makabe
- Stop airflow config update from writing a backup during dry-run (#70979): @Eason09053360
- Fix log template sync failing when a custom SQL Alchemy schema is configured (#70793): @Aaryan123456679
- Drain result_queue before dispatch in LocalExecutor to prevent runtime dispatch deadlock (#70545): @SakshamKapoor2911
- Fix TypeError clearing a DAG run when a queued-at deadline interval is stored as JSON (#70370): @hkc-8010
- Fix manual runs getting a zero-length data interval across DST (#70089): @harjothkhara
- Use atomic upsert for asset run queue on MySQL to avoid deadlocks (#69977): @dstandish
- Don't fail API server startup when a plugin uses an unknown team (#69976): @pierrejeambrun
- Prevent negative trigger queue delay metrics (#69971): @viiccwen
- Fix asset event extra filter matching wrong events for dotted keys on SQLite (#69675): @steveahnahn
- Fix @asset reserved keys with default value (#69642): @FrankYang0529
- Fix
statsd_ipv6config not enabling IPv6 sockets for the default StatsD client (#69632): @ykuc - Make sure stale file handler doesn't crash the DagFileProcessorManager (#69324): @dabla
- UI: Fix triggered Dag run layout in asset event cards (#69310): @parkhojeong
- Fix Dag detail page 500 for Dags without a fileloc #69035 (#69110): @haseebmalik18
- Fix mapped task group XCom collapsing to a bare value for a single expansion (#69075): @shahar1
- Fix macOS SIGSEGV in triggerer and Dag processor via fork+exec (#69008): @kaxil
- Fix branch not skipping mapped tasks with custom XCom backend (#68954): @darshil929
- Do not abort Dag run creation when a deadline alert fails (#68917): @seanghaeli
- Fix duplicate heartbeat-timeout task callbacks (#68008): @hkc-8010
- Drain result_queue in LocalExecutor to prevent process join deadlock (#67881): @SakshamKapoor2911
- Fix missing
task.queued_durationmetric in Airflow 3 (#67592): @myps6415 - Fix CLI connection display reporting wrong is_extra_encrypted flag (#67561): @jonathanleek
- Fix remote processor injection happening before dictConfig runs in configure_logging (#66633): @korex-f
- Fix airflow db clean IntegrityError when a dag_version is referenced by a task_instance (#66350): @jakubmatyszewski
- Fix airflow db clean hang on MySQL when delete fails (#66296): @Vamsi-klu
- Fix
refresh_from_tasknot applied on retries (#65932): @aeroyorch - Fix asset event scheduling race condition and consistency (#62501): @dingo4dev
- Fix
DecreasingPriorityStrategyexample by initializingtry_numberbefore weight evaluation (#62148): @aeroyorch - Fix connection resolution in CLI by setting server process context in decorators (#61036): @uplsh580
Miscellaneous
- Load the serialized Dag when starting a task only for stub tasks (#75795): @jason810496
- UI: Hide the scheduled run icon in the grid legend (#75775): @jedcunningham
- Avoid loading timetables for Dags in Execution API endpoints (#75765): @ashb
- Add metrics for task and asset state store access (#75729): @amoghrajesh
- Add
dag_idandtask_idtags to the resumable_job metrics (#75721): @amoghrajesh - Run a language SDK runtime in its own process group (#75707): @jason810496
- UI: Hide empty log groups in the task log view (#75686): @jedcunningham
- Require cadwyn 8.1 to allow FastAPI 0.137+ (#75689): @jedcunningham
- Report language SDK runtime launch failures in the task log (#75561): @ChickenBenny
- UI: Remove the info tooltip from the Dag version comparison (#75526): @jedcunningham
- UI: Show the filtered task count in the Dag Tasks tab heading (#75448): @nanheekim-ovo
- TS SDK: Take the task state store retention in seconds (#75445): @jason810496
- UI: Show the Dag version diff occurrence count on the path (#75433): @jedcunningham
- UI: Make the Dags sidebar button a link and move Dag Runs and Task Instances under Browse (#75422): @stephenyang0215
- Optimize the scheduler's asset orphanage check with an
EXISTSsubquery instead of a fan-out join (#75404): @Abdel39 - UI: Clean up the Dag Version tab (#75244): @bbovenzi
- UI: Warn when the logical date is outside the Dag's start and end dates (#75223): @yuseok89
- Go SDK: Write the edge label text before the task (#75185): @FrankYang0529
- Open the Dags menu from the Dags nav button instead of navigating (#75092): @pierrejeambrun
- TS SDK: Populate Dag dependencies for TypeScript Dags (#75032): @guan404ming
- Warn about overly large task state values from language SDK tasks (#74945): @ChickenBenny
- Resolve loop iterations through family and path columns on dynamic regions (#74892): @ashb
- Validate
CallbackTriggercallback path before running the callback (#74842): @potiuk - Skip the scheduler's Dag lookup for Dag runs with no callback to send (#74835): @kaxil
- Render XCom values on the API server without rebuilding objects (#74829): @potiuk
- UI: Preload base React plugin bundles with the page (#74777): @jlaneve
- UI: Keep unnamed columns out of the table columns menu (#74774): @yuseok89
- Number task loop iterations from one instead of zero (#74773): @bbovenzi
- UI: Drop the loading spinner for base React plugins (#74762): @jlaneve
- Coerce delta and other typed fields when building operators from YAML Dags (#74749): @uranusjr
- Show Dag version diff values-hidden pill only when values are hidden (#74746): @jedcunningham
- UI: Open nav sidebar menus on hover and add a Dags menu (#74745): @bbovenzi
- Show serializer schema in Dag version diff only when it differs (#74683): @jedcunningham
- Upgrade Task Loop UX (#74671): @bbovenzi
- UI: Fold draining into the Dags Paused state filter (#74668): @bbovenzi
- Lazy-load the Code tab grammar from the Dag's stored language (#74643): @pierrejeambrun
- Highlight YAML Dag source in the Code tab (#74633): @pierrejeambrun
- UI: Add clicked tags to the Dags list filters instead of replacing them (#74622): @yuseok89
- Java SDK: Rename annotation namespace from Builder to Airflow (#74604): @jason810496
- Update waiting tasks to the latest Dag version (#74592): @hussein-awala
- Disable psycopg3 auto-prepare by default behind connection poolers (#74581): @vatsrahul1001
- UI: Replace stacked Dag header banners with inline status (#74516): @bbovenzi
- TS SDK: Reject
triggerDagRuntasks indag.ifanddag.switch(#74492): @guan404ming - Make airflow standalone discover new Dag files within seconds (#74479): @kaxil
- Use the configured API port in the default execution API URL (#74478): @kaxil
- Dag run breadcrumb switcher (#74471): @bbovenzi
- Reduce db clean batch probe overhead (#74455): @safaehar
- UI: Show important form inputs instead of hiding them in accordions (#74422): @bbovenzi
- Speed up Migration 0136 on MySQL (#74409): @ashb
- Scope the mapped task group skip-decision query to its own Dag run (#74390): @vatsrahul1001
- Show loop iterations and outcomes throughout the UI (#74354): @ashb
- Show current task executions in the UI (#74352): @ashb
- Read current task executions by exact region and try (#74350): @ashb
- Clear selected loop work and regenerate only what was replaced (#74349): @ashb
- Resolve live producers by region and read their XCom by attempt (#74344): @ashb
- Parse native Go Dags and show each Dag's own source (#74341): @jason810496
- UI: Apply default visibility to newly added table columns (#74320): @yuseok89
- UI: Group digits of counters in translated strings (#74296): @shahar1
- Remember the Dag runs limit across tab switches and visits (#74289): @tomron
- Scope plugin views on any entity field, not a fixed criteria set (#74278): @bbovenzi
- UI: Open provider connection fields by default and title them by connection type (#74273): @kaxil
- Keep get_dag_details and get_pools database queries off the API server event loop (#74247): @schizophrenicmaniac
- Require
httpx2instead ofhttpxin airflow-core (#74244): @zach-overflow - Scope audit log rows to a Dag only from the request path or body (#74232): @pierrejeambrun
- Register TypeScript, Java and Go grammars for the Dag Code tab (#74231): @pierrejeambrun
- Discover executable bundles by footer, not by execute bit (#74227): @jason810496
- Set end date and duration on tasks skipped by a Dag run timeout (#74128): @luc-pimentel
- Treat an empty Dag run config as no config in the UI (#74083): @pierrejeambrun
- Let a Dag importer find the coordinator that parses its files (#74042): @jason810496
- Validate a serialized Dag and fill its unset settings from the Airflow config (#74041): @jason810496
- Keep the Dag trigger button one-click when a run has no config (#74039): @pierrejeambrun
- Parse native TypeScript Dags with the Node coordinator (#74037): @jason810496
- Parse native Java Dags and show their source (#74036): @jason810496
- Parse native Lang-SDK Dags in the Dag processor with their runtime (#74035): @jason810496
- Persist the match-anywhere search toggle in the URL (#74019): @pierrejeambrun
- UI: Keep Dags list table rows on a single line (#74002): @yuseok89
- UI: Split task storage into separate XCom and task state store tabs (#73989): @bbovenzi
- Surface Dag run conf in the header (#73987): @bbovenzi
- Keep agent framework spans when worker tracing is off (#73903): @kaxil
- Enforce execution_timeout from the task supervisor side (#73806): @Andrushika
- Keep the Dag asset schedule the same shape for every caller (#73805): @henry3260
- Mask provider-declared sensitive connection extras on every connection type (#73794): @potiuk
- Mask registered secrets at any nesting depth (#73793): @potiuk
- Mask XCom values in the audit log (#73791): @potiuk
- Always clear the session cookie on logout (#73788): @potiuk
- Eager-load DagCode in the Dag source API (#73752): @uranusjr
- Speed up zip Dag discovery and keep member file names (#73727): @dilnazanlid
- UI: Group digits of counters according to the selected locale (#73713): @shahar1
- Correct the meaning of _arg_bindings in the serialization schema (#73644): @jason810496
- Sync the UI Dags list applied sort rule with URL query param (#73622): @Andrushika
- Link calendar cell to filter dagruns by the respective start_date and state (#73611): @tirkarthi
- Add the resume event to stored next_kwargs without decoding them (#73576): @potiuk
- Scope plugin scheduling classes to their team in multi-team mode (#73569): @o-nikolas
- Warn when db clean skips only some rows of a batch (#73568): @ferruzzi
- Widen revoked_token.jti to store external-issuer token identifiers (#73562): @pierrejeambrun
- Own the BaseAsyncOperator event loop through asyncio.Runner (#73560): @dabla
- Use os.posix_spawn instead of fork+exec in the task-sdk supervisor (#73503): @seanmuth
- Skip
on_kill()for triggers reassigned to another triggerer (#73454): @kaxil - Document favorite_dag's 409 and return a readable conflict message (#73411): @vsima
- Migrate
GET /execution/variables/keysto an async DB session (#73407): @Dev-iL - Migrate execution API reads to async sessions (#73403): @subhramit
- UI: Show every scheduler, triggerer, and Dag processor in health dashboard (#73355): @vincbeck
- UI: Show xcom before task state store in storage tabs (#73313): @amoghrajesh
- Delay reporting of up-for-retry state until task finalization completes (#73253): @ashb
- Refresh HITL review details on task clear (#73235): @guan404ming
- Scope plugin macros to their team in multi-team mode (#73224): @o-nikolas
- Anchor top-level nav and needs-review links to root paths (#73202): @pierrejeambrun
- Keep Grid scroll position when opening a task (#73123): @dsuhinin
- Identity-only DAG discovery and byte-importing (#73118): @uranusjr
- Move retry policy decision outside post execute log group block (#73023): @amoghrajesh
- Speed up the event logs API by loading only display names (#73021): @FrankYang0529
- Scope upstream asset events of a Dag run to assets and Dags the caller may read (#72924): @henry3260
- Warn at provider discovery about an unresolvable connection type (#72904): @kaxil
- Mark task-group aggregate bars on Gantt with a diagonal stripe (#72894): @pierrejeambrun
- Hide unreadable assets in the asset expression served by next_run_assets (#72864): @henry3260
- Scope UI next_run_assets endpoint to assets the caller may read (#72862): @henry3260
- Keep date-only range ends inclusive (#72860): @noron12234
- Remove a misleading connection type warning and explain lookup failures (#72855): @kaxil
- Keep callback triggers assigned to healthy triggerers (#72848): @hussein-awala
- Remove ignored --output flag from airflow pools set and delete (#72833): @Eason09053360
- Show whether a calendar day's run was a backfill (#72782): @dsuhinin
- Keep the task instance in dag callbacks when its Dag version is missing (#72721): @ephraimbuddy
- Read XCom without object reconstruction during dependency evaluation (#72718): @potiuk
- Mask CLI secrets in the audit log by parsed argument, not argv position (#72650): @potiuk
- Clarify the backfill reprocessing option labels in the CLI and REST API (#72590): @IcebreakerSA
- Warn when connections/variables list output may be incomplete (#72484): @dheerenmohta
- Add a source reference to import errors and a language field to Dag code (REST API + schema) (#72474): @dilnazanlid
- Distinguish empty plugin folder from plugin load failures in logs (#72432): @sreecharan-desu
- Preview JSON fields as inline badges in tables (#72353): @bbovenzi
- More human readable duration strings (#72350): @bbovenzi
- Avoid retrying XCom expand actions (#72305): @huyua9
- Scope plugin operator extra links to their team in multi-team mode (#72231): @o-nikolas
- Use a structured SecretCache key instead of a concatenated string (#72201): @potiuk
- UI: Keep Grid run tooltips inside the viewport (#72161): @NihalRadhakrishna
- UI: Stop list pages jumping while a filter loads (#72005): @rjgoyln
- Include task_reschedule in task_instance dependent tables for db clean (#71990): @Alwaysgaurav1
- UI: Visual overhaul of Dag details layout for easier consumption (#71957): @ryanahamilton
- Authorize team-scoped plugin API endpoints in multi-team mode (#71919): @o-nikolas
- Remove the Go Edge Worker (#71874): @jason810496
- UI: Make dialogs consistent and fix their dark mode background (#71806): @ryanahamilton
- UI: Unify list page filters and table header controls (#71731): @ryanahamilton
- Improve DAG authorization filtering performance (#71722): @abhijeets25012-tech
- Extend user settings with additional configuration (#71699): @dsuhinin
- Cut the per-file cost of persisting Dag parse results (#71621): @ephraimbuddy
- UI: Consolidate table controls into consistent slots and improve visual presentation (#71554): @ryanahamilton
- Stop presenting multi-team tagged metrics as an exhaustive list (#71523): @ramitkataria
- Show the teams of the signed-in user in multi-team mode (#71503): @vincbeck
- Backfills UI filters (#71467): @Phinhas214
- Respect run on latest version when clearing a running Dag run (#71425): @ephraimbuddy
- API: Return asset events for Dag Runs without a start date (#71379): @rino0601
- Use sqlite3.sqlite_version_info instead of hand-parsing the version string (#71115): @jedcunningham
- Validate provider metadata list entries instead of ignoring them (#71104): @Lee-W
- Reject serde-reserved keys in HITL params_input (#71054): @haseebmalik18
- Update grid view refresh (#71004): @bbovenzi
- Improve assets list performance (#70997): @bbovenzi
- Batch triggerer unused trigger cleanup deletes (#70961): @shivaam
- Multi-Team: Add teams verify command to validate multi-team configuration (#70947): @SameerMesiah97
- Describe default Airflow loggers (#70842): @codewithdaniel1
- Rename dag serialization metrics (#70838): @Ei-Sandi
- Show user display names for triggered runs and HITL responses (#70836): @pierrejeambrun
- UI: Preserve Dag tab when switching Dags (#70699): @shivaam
- UI: Wire advanced-search toggle for Grid Triggering User filter (#70567): @dheerajturaga
- UI: Highlight selected Grid task square (#70451): @dheerajturaga
- Feature expand health endpoint reporting (#70416): @JH-A-Kim
- Remove airflow-metadata.yaml sidecar support from NodeCoordinator (#70273): @jason810496
- Show backfill Dag runs in the UI (#70159): @shivaam
- UI: Pass Dag, DagRun, TaskInstance, and Asset objects to React app plugins (#70149): @dheerajturaga
- Rename Task and Asset store to Task and Asset state store (#70097): @jroachgolf84
- Skip timeout callback creation for Dags without on_failure_callback (#70065): @FrankYang0529
- Improve Dag run metrics (#70013): @AutomationDev85
- Sort Dags by latest run after (#69995): @shaealh
- Updated sort+filters for Assets List (#69940): @bbovenzi
- UI: Share one tooltip root across Dag card run-state badges (#69927): @yuseok89
- Progressively load interactive elements of Dag Card (#69806): @shivaam
- Validate deferred trigger classpath resolves to a BaseTrigger subclass (#69792): @hypnguyen1209
- Multi Team: Automatically create and assign team default pools (#69768): @SameerMesiah97
- Pass dag_id to Dag bundle construction on task execution (#69697): @ykuc
- Reduce DAG card tooltip controller overhead (#69681): @shivaam
- Show recent task states on the Dags list page (#69619): @yuseok89
- Resolve NPM vulnerabilities in Simple auth manager (#69488): @vincbeck
- Display latest dagrun state per dag in search result (#69414): @tirkarthi
- Improve mobile responsiveness for dashboard asset cards (#69294): @guan404ming
- Thread version_data to callbacks (#69185): @o-nikolas
- Mark task worker span as failed when the task fails (#69146): @dstandish
- Handle DB Performance Issues by Adding a New Index for Trigger (#69038): @AutomationDev85
- Warm-shutdown supervisor on SIGTERM instead of killing the running task (#69034): @arkadiuszbach
- Raise a warning instead of an error if extra teams are defined in the auth manager (#68935): @stephen-bracken
- UI: Show partition preview in backfill form for partitioned Dags (#68884): @Lee-W
- Display owner_display_name in Audit Log (#68833): @VladaZakharova
- Warn in UI when the same dag_id is registered from multiple files (#68791): @takayoshi-makabe
- Ignore stale executor success when TI is queued after defer (#68741): @goingforstudying-ctrl
- Add
bundle_nametoDag(#68583): @jroachgolf84 - Optionally emit Dag tags as metric tags (#68568): @sortega
- Group and filter Dags by folder on the Dags page (#68544): @RabahAmrouche05
- TriggerRunner: Add batch trigger creation duration metric (#68521): @SameerMesiah97
- Paginate partitioned Dag run modal requests (#68412): @steveahnahn
- Gate raw Dag deserialization error detail behind api.expose_stacktrace and log it server-side (#68388): @potiuk
- Avoid a supervisor round trip before poke for rescheduled sensors (#68012): @hkc-8010
- TriggerRunnerSupervisor: Add trigger queue delay metric (#67927): @SameerMesiah97
- Make kinit renewable lifetime configurable for Heimdal Kerberos support (#67804): @KenanAdel
- Use async DB session for Execution API task-instance heartbeat (#67800): @Dev-iL
- Type asset_expression in the REST API so the UI does not cast through unknown (#67725): @Anuragp22
- Record TaskInstanceHistory when a task fails from a non-running state (#67372): @kalluripradeep
- Remove trigger event payload from INFO log in run_trigger() (#67244): @Feudjo
- Show per-Dag run state counts on the Dags list page (#67242): @yuseok89
- Improve doc_md rendering in Dag Documentation (#66809): @minyeamer
Thanks to all who contributed to the release — the full contributor list is in the first comment below. 🙏
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
kind:metaHigh-level information important to the communityHigh-level information important to the communitytesting statusStatus of testing releasesStatus of testing releases
Activity
vatsrahul1001 commentedon Oct 28, 2026
Thanks to all who contributed to the release:
@14041999ai @1fanwang @202201142 @23tae @aaiss0927 @Aakcht @aaron-y-chen @aaronsteers @Aaryan123456679 @Abdel39 @abhijeets25012-tech @abhinav-phi @abhisek343 @abhishekmauryaKsolves @ABiscuitttt @Adityakk9031 @aeroyorch @ahilashsasidharan @alant94 @AlejandroMorgante @AlexanderBLR @allenc97 @Alwaysgaurav1 @Amitkumar293 @AmoghAtreya @amoghrajesh @Andrej730 @Andrushika @anisengupta @anishgirianish @anmolxlight @AntonioBergonzi @antruigon @Anuragp22 @anxkhn @anzinmhd @aoelvp94 @arijitroy003 @arkadiuszbach @arnavsingh0418 @arnoldmr01 @Arose26 @arunppsg @ashb @AshleyAHuang @ashokraminedi @ashutosh264 @atakanyenel @atamagrawal @atharvaajmera @auroraxo @AutomationDev85 @auyua9 @Avcu @Bafff @baha-bouali @baraka-akeyless @basantjamwal @BasPH @bbovenzi @Beat-Nick @bentorb @bhavya2109sharma @bingqin2 @bmanan7 @bnspopi @br413 @bramhanandlingala @bugraoz93 @bujjibabukatta @ccoliu @CharoenwitKunna @ChickenBenny @choo121600 @chrispatterson @cmettler @codewithdaniel1 @codewithsruthi @Codingaditya17 @coleheflin @ColtenOuO @cool9850311 @Crowiant @cruseakshay @CyberNativeAI @dabla @daesung9511 @daniyarndh @darshil929 @davidnzhang @deepujain @Dev-iL @dev-xong @developer-rpai @dgvj-work @DhanushAnegondi @DHBhensdadia @dheerajturaga @dheerenmohta @dhkim1920 @dilnazanlid @dingo4dev @divyanshus2404 @DjVinnii @dkranchii @dlactin @DonHaul @dosedaf @Dotify71 @drewrukin @dstandish @dsuhinin @durgaprasadml @dybyte @Eason09053360 @ecodina @ed-kyu @Ed3110 @eddiesr93 @edsu @ehab20011 @Ei-Sandi @eitan-shalev @eladkal @ellisms @EncrypterParv @ephraimbuddy @fallintoplace @fat-catTW @feberbo @ferruzzi @Feudjo @filipeaaoliveira @firasbouzazi @fpiped @FrankYang0529 @gang-zh @GayathriSrividya @glostis @gocoolp @goingforstudying-ctrl @gopidesupavan @gps23 @gtxu @guan404ming @hanu-14 @hanxdatadog @Har1sh-k @harishkesavarao @harjothkhara @harshhh817 @haseebmalik18 @HasnainRaz @henry3260 @HeroCC @himanshuchawla0807-gif @hkc-8010 @HsuehYi @hunnguye @hussein-awala @huyua9 @hypnguyen1209 @IcebreakerSA @ignacioparicio @ihorlukianov @imrichardwu @itayweb @itej13 @ivonaest @jacobcbeaudin @jakezwang @jakubmatyszewski @jason810496 @jasperjonkhans @jayachandrakasarla @jayamanikharyono @jedcunningham @jeff3071 @JelyFishhhhhh @JH-A-Kim @Jie211 @jingi723 @jlaneve @jonathanleek @Jonghyun-An @JoonKyoLee @joseph-bergin @josix @jroachgolf84 @jscheffl @juan-pablo-guereca @Junwon @justinpakzad @jx2lee @k-popov @Kaap10 @kacpermuda @kada2004 @kadubhumika @kakatur @kalluripradeep @karenhsieh75 @karthedew @KarthikMohankumar @kartik00052 @kaxil @keemgdeok @keith991001 @KenanAdel @KenanAdel-M @kevinhongzl @KidAmnesiac1 @KingLizard1020 @koleharv @korex-f @krystianpl26 @KSchmidAmilar @Kunal8954 @KushagraB424 @kutsibalci @LE0-Lin @Lee-W @leeyspaul @li-xiang-db @liwenjie200543 @lohitkolluri @Lothnic @lubimow-xwf @luc-pimentel @LuchoFormisano @LuisFelipeUrena @lyric2249 @MahathirMohammadShuvo @MaksYermak @MalteNiederstadt @manish1337 @MannXo @MarthalaJagruthiReddy @martin-ubm @matthieuauger @mattwang44 @maupatel @MeghanaGangarapu @MhussainD4772 @michaelneely @MichalJaroslawKrzywanski-TomTom @mihirduvedi @minyeamer @Miretpl @mitre88 @mobuchowski @MOJAN3543 @Mola-maker @molcay @moomindani @MukundKulkarni @myps6415 @nagasrisai @namanjain24-sudo @nandeshkanagaraju @nanheekim-ovo @Nataneljpwd @neel-astro @nickstenning @NihalRadhakrishna @nikoki @nikolauspschuetz @noah-gil @noamst-monday @noron12234 @nyang404 @o-nikolas @olayiwola-gbenga @olegkachur-e @olmaks @onlyarnav @osintalex @ozemin @Pandry @pankajastro @pankajkoti @parkhojeong @Pebble32 @Pedrinhonitz @peloyeje @phanikumv @Phinhas214 @pickfire @pierrejeambrun @PolitePp @potiuk @Prab-27 @Prajwal7842 @pranampagi @pranayyelugam @PreethamSanji @Priyaj11 @purva-code24 @Pushkal-Gupta @puzzle-rpa-team @r3wretrhy @RabahAmrouche05 @radhwene @ramitkataria @rammmaa @raphaelauv @RaphCodec @rapsealk @rawsun007 @renat-sagut @rino0601 @rjgoyln @RNHTTR @robertpofuk @rohan9446 @Rohitkanithi @roshanprabu @roykoand @RoyLee1224 @ryanahamilton @RyukR1 @saadbelgi @safaehar @saitejabandaru @SakshamKapoor2911 @SameerMesiah97 @Samin061 @samraj2k @SamWheating @schizophrenicmaniac @Sdnsoumy @sduvvuri26 @seanghaeli @seanmuth @sehajsandhu123 @sejal-gupta-ksolves @SEPURI-SAI-KRISHNA @sgoel2be24-cyber @shaealh @shahar1 @shashank-iitbhu @shivaam @ShivanshhhG @shoemoney @ShousenZHANG @shreyamalviya @ShubhamKapoor992 @shubhamraj-git @shubhgurav0590 @SIBTAIN-ASAD @simar-rekhi @simon-hoon @singhAbhishek16 @singlaamitesh @sivavarma-x @sjyangkevin @sln-jack @sohamwaghe @sokojh @somaz94 @sortega @souradeep07 @spider-man-tm @sreecharan-desu @SreeramaYeshwanthGowd @stegololz @stephen-bracken @stephenyang0215 @stephsi @steveahnahn @Subham-KRLX @subhramit @SulimanAbdulrazzaq @szzhoujiarui @takayoshi-makabe @te-horie @Tegh25 @thc1006 @theJohnnyBrown @TheoLauw @TimurRakhmatullin86 @tirkarthi @TJaniF @tomron @topherinternational @ucaeon @udsy19 @uplsh580 @uranusjr @vaishsriram @Vamsi-klu @vatsrahul1001 @Vedant-Agarwal @vgkowski @victorymakes @viiccwen @vikramkoka @vincbeck @VinolFernandes @Vishwaspatel2401 @vitorantoniazzi @vividbaek @VladaZakharova @vsima @w-shahid @warreee @weiyu1029 @wiasliaw @Will-thom @wolvery @WonYong-Jang @X33834 @xBis7 @xlsongc @yamakazushi @YAshhh29 @YashrajG @ydsakshi @ykuc @ylv01 @yuseok89 @yuyua9 @zach-overflow @zachliu @Zeeshan-Chaudhry @zhangxinyao88 @ZhaoMJ @zohaibfast99 @zozo123
zach-overflow commentedon Oct 28, 2026
No issues found from my testing of #73116 and #74244 against Airflow core (
3.4.0rc1) / task-sdk (1.4.0rc1) with Python 3.11 in Breeze, both work as expected.httpximports and usehttpx2in every migrated module. Task SDK metadata requireshttpx2+truststoreand no longercertifi(expected, as per thehttpx2docs here).[api] ssl_cert).airflow dags testVariable.getAPI calls[api] ssl_ca_fileis trusted. An unknown CA is rejected. A CA added to the system store is trusted via truststore, both by the SDK client and by barehttpx2.client_use_public_certs=Falsewithssl_ca_filestill works.httpx2request lines do not leak into task logs.Did not test: macOS/Windows truststore behaviour described in the significant newsfragment, since this was Linux only.
aaron-y-chen commentedon Oct 28, 2026
I've tested my changes in #58543 and #74377, and they're working well :)
Andrushika commentedon Oct 28, 2026
I found a scheduler crash on Postgres that looks related to #70972.
Since #70972,
asset_dag_run_queuekeeps one row for each asset event. When the scheduler creates an asset-triggered run, it puts all queued rows of the Dag into oneIN (...). With many rows, Postgres rejects the statement. The scheduler exits, and it fails again on each restart. Then no Dag gets scheduled.What I saw on
apache/airflow:3.4.0rc1with Postgres 16. I sent the events withPOST /api/v2/assets/events.schedule=[a, b]and 9,000 queued events fails withstack depth limit exceeded.[scheduler] batch_asset_events = Truewaits atmax_active_runswhile events arrive. With 9,000 queued events, it fails with the same error.number of parameters must be between 0 and 65535.On 3.3.2, the same
[a, b]Dag with 33,500 events works fine.Drafted-by: Claude Opus 5.5 (reviewed by me)
seanghaeli commentedon Oct 29, 2026
All tested for #71192, #73580, #75255 and #68917 on 3.4.0rc1
imrichardwu commentedon Oct 29, 2026
I've tested my changes in [#70714](#70714), and everything is working
ccoliu commentedon Oct 29, 2026
Tested #72425 on 3.4.0rc1, and it works as expected
1fanwang commentedon Oct 29, 2026
@vatsrahul1001 Both of my changes work as expected in 3.4.0rc1, compared against 3.3.2.
#71529: with OTEL_CONFIG_FILE set, a real scheduler now exports through the file's exporter and view. 3.3.2 discards them.
#71251: with only PyMySQL installed, db migrate and a Dag run succeed on MySQL 8.4. 3.3.2 raises the mysqlclient RuntimeError.
Evidence
apache-airflow 3.4.0rc1 and task-sdk 1.4.0rc1 from PyPI with the 3.4.0rc1 constraints file, Python 3.12, macOS arm64. The control is apache-airflow 3.3.2, the latest 3.3.x release.
71529: opentelemetry-instrument airflow scheduler for 35 s with otel_on=True and an OTEL_CONFIG_FILE that declares a console exporter and a *_duration view with explicit bounds.
The repro script from the PR (bootstrap, then get_otel_logger()):
Without OTEL_CONFIG_FILE the re-init path is unchanged on both versions: the provider is replaced and a post-fork counter still exports.
71251: MySQL 8.4.13 on localhost, PyMySQL 1.1.3 and aiomysql installed, mysqlclient not installed.
Neither driver installed, 3.4.0rc1:
Both drivers installed, 3.4.0rc1 with mysqlclient 2.3.0: airflow db check prints "Connection successful." with both mysql+mysqldb and mysql+pymysql URLs.
Drafted-by: GitHub Copilot CLI (Claude Sonnet 5.5); reviewed by @1fanwang before posting
shahar1 commentedon Oct 29, 2026
My changes work as expected.
#73433 was not automatically backported for some reason - here's a manual PR to do it: #75939
anisengupta commentedon Oct 29, 2026
From my side, the following changes were tested:
We also performed static-scan and deprecation-warning tests to look for patterns affected by these changes:
[workers] execution_api_retries#73244)--file-ioasfile.iodropped anonymous uploads #73054)All looks good.
fat-catTW commentedon Oct 29, 2026
Tested on Airflow 3.4.0rc1 with local airflow standalone.
They work as expected.
anzinmhd commentedon Oct 29, 2026
Tested on Airflow 3.4.0rc1 using Breeze with PostgreSQL:
Both behaved as expected.
samraj2k commentedon Oct 29, 2026
Tested: #73717 on local Airflow.
Working as expected!
kevinhongzl commentedon Oct 29, 2026
Tested these features in 3.4.0rc1 locally; they both work as expected
viiccwen commentedon Oct 29, 2026
Tested my PRs on
apache/airflow:3.4.0rc1-python3.12, both work and pass checks.