Apache Airflow 2.1.0rc1
Pre-release
Pre-release
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
toBranchDateTimeOperator
(#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 ofBaseOperator
(#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
to6000
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 whendry_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
forKubernetesPodOperator
(#15445) - Bugfix: Invalid name when trimmed
pod_id
ends with hyphen inKubernetesPodOperator
(#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 returnDecimal
that break rest APIs (#15585)- Persist tags params in pagination (#15411)
- API: Raise
AlreadyExists
exception when theexecution_date
is same (#15174) - Remove duplicate call to
sync_metadata
insideDagFileProcessorManager
(#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 havetotal_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
andyamllint
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)