airflow.git
8 months agoFix references link in Providers docs (#17286) v2-1-test
Kaxil Naik [Wed, 28 Jul 2021 15:47:23 +0000 (16:47 +0100)] 
Fix references link in Providers docs (#17286)

fixes issue mentioned in https://apache-airflow.slack.com/archives/C0146STM600/p1627475111055600

Corresponding Airflow site change: https://github.com/apache/airflow-site/pull/458

If the docs are published 'for production' (i.e. to publish on stable doc site) then we should use "stable" for Airflow version instead of "latest"

(cherry picked from commit 3650448301d3b2a31a4996e035f1b325148c8639)

9 months agoExplain scheduler fine-tuning better (#18356)
Jarek Potiuk [Tue, 21 Sep 2021 20:26:47 +0000 (22:26 +0200)] 
Explain scheduler fine-tuning better (#18356)

* Explain scheduler fine-tuning better

A lot of users have an expectations that Airflow Scheduler will
`just work` and deliver the `optimal performance` for them without
realising that in case of such comples systems as Airflow is you
often have to decide what you should optimise for or accept some
trade-offs or increase hardware capacity if you are not willing to
make those trade-offs.

Also it's not clear where the responsibility
is - should it `just work` or should the user be responsible for
understanding and fine tuning their system (both approaches are
possible, there are some complex systmes which utilise a lot of
automation/AI etc. to fine tune and optmise their behaviour but
Airflow expects from the users to know a bit more on how the
scheduling works and Airflow maintainers deliver a lot of
knobs that can be turned to fine tune the system and to make
trade-off decisions. This was not explicitely stated in our
documentation and users could have different expectations about
it (and they often had judging from issues they raised).

This PR adds a "fine-tuning" chapter that aims to set the
expectations of the users at the right level - it explains what
Airflow provides, but also what is the user's responsibility - to
decide what they are optimising, to see where their bottlenecks
are and to decide if they need to change the configuration or
increase hardware capacity (or make appropriate trade-offs).

It also brings more of the fine-tuning parameters to the
`tuneables` section of scheduler, based on some of the recent
questions asked by the users - seems that having a specific
overview of all performance-impacting parameters is a good idea,
and we only had a very limited subset of those.

Some user prefer `watch` rather than read that's why this PR
also adds the link to the recording of talk from the
Airlfow Summit 2021 where Ash describes - in a very concise
and easy to grasp way - all the whys and hows of the scheduler.
If you understand why and how the scheduler does what it does,
fine-tuning decisions are much easier.

* fixup! Explain scheduler fine-tuning better

(cherry picked from commit eed2ef65e1d1283fa9a34e6002f456b0aceb17c1)

9 months agoAdd PGBouncer recommendation in "setup-database' doc. (#18399)
Jarek Potiuk [Tue, 21 Sep 2021 07:35:21 +0000 (09:35 +0200)] 
Add PGBouncer recommendation in "setup-database' doc. (#18399)

We were recommending using PGBouncer for all Postgres installation
for quite some time at least verbally but also in the Helm Chart
documentation. However we missed such recommendation in the
general Postgres area of 'Setting Up the database` doc.

This PR adds a note that we can refer to when explaining
problems with connections and stability to the users who
use Postgres without PGBouncer proxy (which is known to help
in such cases)

(cherry picked from commit e8667b6ac1d5409acddf1ba2a382ed30ee12f53d)

9 months agoDoc: Fix broken ``asc`` download link (#18350)
Kaxil Naik [Sun, 19 Sep 2021 01:24:50 +0000 (02:24 +0100)] 
Doc: Fix broken ``asc`` download link (#18350)

There was a typo, hence the download link was broken

(cherry picked from commit 59b3c5c4f4653c6ff6d46186090796848269e45c)

9 months agoadd sla_miss_callback section to the documentation (#18305)
Alex Kennedy [Sat, 18 Sep 2021 19:18:32 +0000 (13:18 -0600)] 
add sla_miss_callback section to the documentation (#18305)

(cherry picked from commit dcfa14d60dade3fdefa001d10013466fe4d77f0d)

9 months agoRefactor installation pages (#18282)
Jarek Potiuk [Fri, 17 Sep 2021 15:55:27 +0000 (17:55 +0200)] 
Refactor installation pages (#18282)

This PR splits ad improves the installation-related documentation
for Airflow. The "installation" page had become overloaded
wiht everything-but-the-kitchen-sink and it became rather
difficult to navigate and link to relevant sections.

Also there was not a single page where one could have an overview
on different installation methods possible, cases when
each instalation works best as well as understanding what
is involved in following each installation method in terms of
maintenance, and expectations that users should have when it
comes to what Apache Airflow Community provides.

The PR leaves the installation page as basically a summary of
all installation methods with all above explained and links
to detailed pages explaining prerequisites, dependencies,
database setup and supported versions.

(cherry picked from commit 4308a8c364d410ea8c32d2af7cc8ca3261054696)

9 months agoImproves installing from sources pages for all components (#18251)
Jarek Potiuk [Wed, 15 Sep 2021 06:32:06 +0000 (08:32 +0200)] 
Improves installing from sources pages for all components (#18251)

* Shorter menu sections for installation page
* Added "installing from sources" for Helm Chart
* Added Providers summary page for all provider packages
* Added scripts to verify PyPI packages with gpg/sha

(cherry picked from commit 67fddbf644eb6b11810addaf17d1be29c1bc39f6)

9 months agoUpdate Changelog 2.1.4rc2 v2-1-stable 18280/head 2.1.4 2.1.4rc2
Kaxil Naik [Wed, 15 Sep 2021 21:18:37 +0000 (22:18 +0100)] 
Update Changelog 2.1.4rc2

9 months agoImproves installing from sources pages for all components (#18251)
Jarek Potiuk [Wed, 15 Sep 2021 06:32:06 +0000 (08:32 +0200)] 
Improves installing from sources pages for all components (#18251)

* Shorter menu sections for installation page
* Added "installing from sources" for Helm Chart
* Added Providers summary page for all provider packages
* Added scripts to verify PyPI packages with gpg/sha

(cherry picked from commit 67fddbf644eb6b11810addaf17d1be29c1bc39f6)

9 months agoDoc: Use ``closer.lua`` script for downloading sources (#18179)
Kaxil Naik [Sun, 12 Sep 2021 08:58:54 +0000 (09:58 +0100)] 
Doc: Use ``closer.lua`` script for downloading sources (#18179)

- Follows first point of https://infra.apache.org/release-download-pages.html#download-page to use `https://www.apache.org/dyn/closer.lua/PROJECT/VERSION/SOURCE-RELEASE` for mirrors
- Fixes bug as the current version substitution does not work for Hyperlinks (open PR: https://github.com/adamtheturtle/sphinx-substitution-extensions/issues/178)

(cherry picked from commit 9d05b32de593d2d553cfc567e092941b3d30a8a7)

9 months agoDoc: Improve installing from sources (#18194)
Kaxil Naik [Sun, 12 Sep 2021 20:37:42 +0000 (21:37 +0100)] 
Doc: Improve installing from sources (#18194)

Based on https://github.com/apache/airflow/pull/18187/#discussion_r706861500

(cherry picked from commit ec79da0118048d5d80ec3126a5d8fe1452522534)

9 months agoAdvises the kernel to not cache log files generated by Airflow (#18054)
Jarek Potiuk [Thu, 9 Sep 2021 10:50:45 +0000 (12:50 +0200)] 
Advises the kernel to not cache log files generated by Airflow (#18054)

* Advises the kernel to not cache log files generated by Airflow

Extends the standard python logging.FileHandler with advise to the
Kernel to not cache the file in PageCache when it is written. While
there is nothing wrong with such cache (it will be cleaned when memory
is needed), it causes ever-growing memory usage when scheduler is
running as it keeps on writing new log files and the files are not
rotated later on. This might lead to confusion for our users, who are
monitoring memory usage of Scheduler - without realising that it is
harmless and expected in this case.

Adding the advice to Kernel might help with not generating the cache
memory growth in the first place.

Closes: #14924
(cherry picked from commit 43f595fe1b8cd6f325d8535c03ee219edbf4a559)

9 months agoSort adopted tasks in _check_for_stalled_adopted_tasks method (#18208)
Ephraim Anierobi [Wed, 15 Sep 2021 13:36:45 +0000 (14:36 +0100)] 
Sort adopted tasks in _check_for_stalled_adopted_tasks method (#18208)

This PR adds sorting in adopted_tasks_timeout to ensure we correctly
clear stalled adopted tasks

(cherry picked from commit 9a7243adb8ec4d3d9185bad74da22e861582ffbe)

9 months agoFix ``DagRunState`` enum query for ``MySQLdb`` driver (#17886)
Kaxil Naik [Mon, 30 Aug 2021 18:05:08 +0000 (19:05 +0100)] 
Fix ``DagRunState`` enum query for ``MySQLdb`` driver (#17886)

same as https://github.com/apache/airflow/pull/13278 but for `DagRunState` introduced in https://github.com/apache/airflow/pull/16854

closes https://github.com/apache/airflow/issues/17879

(cherry picked from commit a3f9c690aa80d12ff1d5c42eaaff4fced07b9429)

9 months agoUpdate CHANGELOG.txt 18175/head 2.1.4rc1
Kaxil Naik [Sat, 11 Sep 2021 21:01:53 +0000 (22:01 +0100)] 
Update CHANGELOG.txt

9 months agoSet task state to failed when pod is DELETED while running (#18095)
lindsable [Sat, 11 Sep 2021 20:18:32 +0000 (16:18 -0400)] 
Set task state to failed when pod is DELETED while running (#18095)

There is a bug in the Kubernetes Job Watcher that occurs when a node with a running worker pod is removed from the cluster. If the worker pod doesn't complete before the node is removed, it is orphaned and forced deleted by the garbage collector. This is communicated by the API with a status='Running' but an event with type='DELETED'

Because in the if statement the Job Watcher doesn't check the event type, the last information we get from the pod is that is it running. The running scheduler never gets any information about the pod and shows it as stuck in a queued state. This situation is fixed when the scheduler/executor restarts and this function is run.

(cherry picked from commit e2d069f3c78a45ca29bc21b25a9e96b4e36a5d86)

9 months agoClearly document no breaking change for ``>=2.1.2, <=2.1.4`` 18163/head
Kaxil Naik [Sat, 11 Sep 2021 19:23:38 +0000 (20:23 +0100)] 
Clearly document no breaking change for ``>=2.1.2, <=2.1.4``

Similar to #6240 and #17706

9 months agoSeparate Installing from sources section and add more details (#18171)
Kaxil Naik [Sat, 11 Sep 2021 19:10:34 +0000 (20:10 +0100)] 
Separate Installing from sources section and add more details (#18171)

This PR separate installing Airflow from sources section and also fixes links for binary source, it had `-bin` suffix which we don't use anymore. And I have added section on verifying integrity. And add more details with examples

(cherry picked from commit f9969c1650252075816b2b8d0f1596d407a7aca3)

9 months agoFix `TestSecurity.test_current_user_has_permissions` (#17916)
Jed Cunningham [Mon, 30 Aug 2021 18:35:01 +0000 (12:35 -0600)] 
Fix `TestSecurity.test_current_user_has_permissions` (#17916)

This test wasn't working on python > 3.7.

(cherry picked from commit 4a0711c91e51e5208fc767cd43cfc0daf90052d9)

9 months agoFix missing `create_dummy_dag` fixture
Jarek Potiuk [Sat, 11 Sep 2021 16:09:53 +0000 (18:09 +0200)] 
Fix missing `create_dummy_dag` fixture

9 months agoFix spelling mistake
Jarek Potiuk [Sat, 11 Sep 2021 16:05:44 +0000 (18:05 +0200)] 
Fix spelling mistake

9 months agoImproves quick-start docker-compose warnings and documentation
Jarek Potiuk [Mon, 6 Sep 2021 13:47:00 +0000 (15:47 +0200)] 
Improves quick-start docker-compose warnings and documentation

The recently updated docker-compose had a bit broken behaviour
for non-Linux users. It expected the .env file to be created
always, but the instructions to create them were not working
on Windows. This fixes the problem by turning the error
into warning, and directing the users to the right instructions
per operating system.

Also the recent ``DUMB_INIT_SESS_ID`` was added for worker to
allow to handle signals properly also in our quick-start
docker-compose.

(cherry picked from commit bd77689bbc3c3c93c7feefe6f266735f73ee0bf9)

9 months agoAdd Changelog for 2.1.4
Kaxil Naik [Fri, 10 Sep 2021 14:11:27 +0000 (15:11 +0100)] 
Add Changelog for 2.1.4

9 months agoRegression on pid reset to allow task start after heartbeat (#17333)
nmehraein [Tue, 3 Aug 2021 10:36:57 +0000 (12:36 +0200)] 
Regression on pid reset to allow task start after heartbeat (#17333)

Regression on PID reset to allow task start after heartbeat

Co-authored-by: Nicolas MEHRAEIN <nicolas.mehraein@adevinta.com>
(cherry picked from commit ed99eaafc479aedbbe2d618da878195a132abb1a)

9 months agoFixes warm shutdown for celery worker. (#18068)
Jarek Potiuk [Fri, 10 Sep 2021 18:13:31 +0000 (20:13 +0200)] 
Fixes warm shutdown for celery worker. (#18068)

The way how dumb-init propagated the signal by default
made celery worker not to handle termination well.

Default behaviour of dumb-init is to propagate signals to the
process group rather than to the single child it uses. This is
protective behaviour, in case a user runs 'bash -c' command
without 'exec' - in this case signals should be sent not only
to the bash but also to the process(es) it creates, otherwise
bash exits without propagating the signal and you need second
signal to kill all processes.

However some airflow processes (in particular airflow celery worker)
behave in a responsible way and handles the signals appropriately
- when the first signal is received, it will switch to offline
mode and let all workers terminate (until grace period expires
resulting in Warm Shutdown.

Therefore we can disable the protection of dumb-init and let it
propagate the signal to only the single child it spawns in the
Helm Chart. Documentation of the image was also updated to include
explanation of signal propagation. For explicitness the
DUMB_INIT_SETSID variable has been set to 1 in the image as well.

Fixes #18066

(cherry picked from commit 9e13e450032f4c71c54d091e7f80fe685204b5b4)

9 months agoBump version to 2.1.4
Kaxil Naik [Fri, 10 Sep 2021 14:06:48 +0000 (15:06 +0100)] 
Bump version to 2.1.4

9 months agoDo not let create_dagrun overwrite explicit run_id (#17728)
Tzu-ping Chung [Thu, 19 Aug 2021 14:33:09 +0000 (22:33 +0800)] 
Do not let create_dagrun overwrite explicit run_id (#17728)

Previous DAG.create_dagrun() has an weird behavior that when *all* of
run_id, execution_date, and run_type are provided, the function would
ignore the run_id argument and overwrite it by auto-generating a run_id
with DagRun.generate_run_id(). This fix the logic to respect the
explicit run_id value.

I don't think any of the "Airflow proper" code would be affected by
this, but the dag_maker fixture used in the test suite needs to be
tweaked a bit to continue working.

(cherry picked from commit 50771e0f66803d0a0a0b552ab77f4e6be7d1088b)

9 months agoUpdate version added fields in airflow/config_templates/config.yml (#18128)
Kamil Breguła [Thu, 9 Sep 2021 23:21:06 +0000 (01:21 +0200)] 
Update version added fields in airflow/config_templates/config.yml (#18128)

(cherry picked from commit 2767781b880b0fb03d46950c06e1e44902c25a7c)

9 months agoFix deprecation error message rather than silencing it (#18126)
Ash Berlin-Taylor [Thu, 9 Sep 2021 23:07:19 +0000 (00:07 +0100)] 
Fix deprecation error message rather than silencing it (#18126)

(cherry picked from commit c9d29467f71060f14863ca3508cb1055572479b5)

9 months agoLimit the number of queued dagruns created by the Scheduler (#18065)
Ephraim Anierobi [Thu, 9 Sep 2021 13:24:24 +0000 (14:24 +0100)] 
Limit the number of queued dagruns created by the Scheduler (#18065)

There's no limit to the amount of queued dagruns to create currently
and it has become a concern with issues raised against it. See #18023 and #17979

Co-authored-by: Sam Wheating <samwheating@gmail.com>
(cherry picked from commit 0eb41b5952c2ce1884594c82bbf05835912b9812)

9 months agoFix DagRun execution order from queued to running not being properly followed (#18061)
Ephraim Anierobi [Thu, 9 Sep 2021 11:03:33 +0000 (12:03 +0100)] 
Fix DagRun execution order from queued to running not being properly followed (#18061)

We made a fix that resolved max_active_runs not allowing other dagruns to move to
running state, see #17945 and introduced a bug that dagruns were not following the
execution_date order when moving to running state.

This PR fixes it by adding a 'max_active_runs` column in dagmodel. Also an extra test
not connected with this change was added because I was able to trigger the bug while
working on this

(cherry picked from commit ebbe2b4cafebe2b523ca08abd40145c3c7eec046)

9 months agoFix max_active_runs not allowing moving of queued dagruns to running (#17945)
Ephraim Anierobi [Thu, 2 Sep 2021 12:14:36 +0000 (13:14 +0100)] 
Fix max_active_runs not allowing moving of queued dagruns to running (#17945)

Currently, if you set max_active_runs for a dag and that dag has many queued dagruns
with execution dates older than another dag's queued dagruns, airflow will not move
the newer queued dagruns to running with the effect that only one dagruns would be in running at any time

This PR fixes this by updating the DagRun.last_scheduling_decision whenever a decision of scheduling
was made

(cherry picked from commit 430976caad5970b718e3dbf5899d4fc879c0ac89)

9 months agoAvoid redirect loop for users with no permissions (#17838)
Jed Cunningham [Thu, 26 Aug 2021 20:59:30 +0000 (14:59 -0600)] 
Avoid redirect loop for users with no permissions (#17838)

Like we recently did for users with no roles, also handle it gracefully
when users have no permissions instead of letting them get stuck in a
redirect loop.

This also changes the approach to rendering the template as a 403 for
the originally requested URI instead of redirecting to a separate endpoint.

Closes: #16587
(cherry picked from commit e18b6a6d19f9ea0d8fe760ba00adf38810f0e510)

9 months agoAvoid endless redirect loop when user has no roles (#17613)
Jed Cunningham [Wed, 18 Aug 2021 11:56:09 +0000 (05:56 -0600)] 
Avoid endless redirect loop when user has no roles (#17613)

(cherry picked from commit 6868ca48b29915aae8c131d694ea851cff1717de)

9 months agoFix log links on graph TI modal (#17862)
Jed Cunningham [Fri, 27 Aug 2021 15:23:49 +0000 (09:23 -0600)] 
Fix log links on graph TI modal (#17862)

The graph view should show the "Download Log" and "View Logs in {remote
logging system}", like is done on the tree view.

(cherry picked from commit 83f1f07aff025ed69fa39cc764163ba266c45857)

9 months agoHide variable import form if user lacks permission (#18000)
Jed Cunningham [Fri, 3 Sep 2021 07:34:51 +0000 (01:34 -0600)] 
Hide variable import form if user lacks permission (#18000)

This hides the variable import form if the user does not have the "can
create on variable" permission.

(cherry picked from commit 7b3a5f95cd19667a683e92e311f6c29d6a9a6a0b)

9 months agoImprove dag/task concurrency check (#17786)
Ephraim Anierobi [Mon, 23 Aug 2021 14:58:55 +0000 (15:58 +0100)] 
Improve dag/task concurrency check (#17786)

Currently, tasks can be run even if the dagrun is queued. Task instances of queued dagruns
should only be run when the dagrun is in running state. This PR makes sure tis of queued dagruns
are not run thereby properly checking task concurrency.

Also, we check max_active_runs when parsing dag which is no longer needed since dagruns
are created in queued state and the scheduler controls when to change the queued dagruns
to running considering the max_active_runs.
This PR removes the checking of max_active_runs in the dag too.

(cherry picked from commit ffb81eae610f738fd45c88cdb27d601c0edf24fa)

9 months agoFix Clear task instances endpoint resets all DAG runs bug (#17961)
Yash Dodeja [Wed, 1 Sep 2021 17:45:36 +0000 (23:15 +0530)] 
Fix Clear task instances endpoint resets all DAG runs bug (#17961)

(cherry picked from commit 683fbd49d7873edd90632926e15d51d970aa00fb)

9 months agoFixes incorrect parameter passed to views (#18083) (#18085)
Robin Edwards [Wed, 8 Sep 2021 22:00:52 +0000 (23:00 +0100)] 
Fixes incorrect parameter passed to views (#18083) (#18085)

The task_stats, last_dagruns, blocked etc expect dag_ids not dagIds.

This caused the endpoint to return all dags the user had access to by
default

closes: #18083
(cherry picked from commit d6e48cd98a1d82829326d4c48a80688866563f3e)

9 months agoFix Sentry handler from LocalTaskJob causing error (#18119)
Robin Edwards [Thu, 9 Sep 2021 23:14:36 +0000 (00:14 +0100)] 
Fix Sentry handler from LocalTaskJob causing error (#18119)

The `enrich_errors` method assumes the first argument to the function
its patch is a TaskInstance when infact it can also be a LocalTaskJob.

This is now handled by extracting the task_instance from the
LocalTaskJob

Closes #18118

(cherry picked from commit f97ddf10e148bd18b6a09ec96f1901068c8684f0)

9 months agoLimit colorlog version (6.x is incompatible) (#18099)
Malthe Borch [Wed, 8 Sep 2021 22:05:34 +0000 (00:05 +0200)] 
Limit colorlog version (6.x is incompatible) (#18099)

The "color" method seems to have been removed.

(cherry picked from commit a1d91725bf7c842a72a9c174fecf9d9fc41ac5e5)

9 months agoOnly show Pause/Unpause tooltip on hover (#17957)
Brent Bovenzi [Wed, 1 Sep 2021 12:14:41 +0000 (14:14 +0200)] 
Only show Pause/Unpause tooltip on hover (#17957)

After clicking on the Pause/Unpause toggle, the element remained in focus and therefore the toggle wouldn't go away. After a change event we will also trigger a blur event to remove the focus so the tooltip will only appear on hover.

Fixes: #16500
(cherry picked from commit ee93935bab6e5841b48a07028ea701d9aebe0cea)

9 months agoImprove graph view load time for dags with open groups (#17821)
Emil Ejbyfeldt [Thu, 26 Aug 2021 12:53:44 +0000 (14:53 +0200)] 
Improve graph view load time for dags with open groups (#17821)

* Only draw once during initial graph setup

The previous behavior could cause significat slowness for when loading
the graph view for large dags with many task groups.

* Improve name and fix camelCased

* Fix indent

* PR suggestions remove args

(cherry picked from commit bfdda083d684b279b6b07e79080373ae4d36939a)

9 months agoIncrease width for Run column (#17817)
Gabriel Machado [Wed, 25 Aug 2021 12:48:33 +0000 (14:48 +0200)] 
Increase width for Run column (#17817)

(cherry picked from commit 96f7e3fec76a78f49032fbc9a4ee9a5551f38042)

9 months agoFix wrong query on running tis (#17631)
Ephraim Anierobi [Tue, 17 Aug 2021 08:37:56 +0000 (09:37 +0100)] 
Fix wrong query on running tis (#17631)

Fix wrong query on my PR about deleting running dags #17630

Co-authored-by: Kaxil Naik <kaxilnaik@gmail.com>
(cherry picked from commit 84df8646ba396088e70ca8469b301d11d13d2da7)

9 months agoAdd root to tree refresh url (#17633)
Brent Bovenzi [Mon, 16 Aug 2021 16:00:02 +0000 (18:00 +0200)] 
Add root to tree refresh url (#17633)

We were not passing the root to the `/tree_data` api call. Therefore, filtering upstream of a task would be reset during auto-refresh even though root was still defined.

(cherry picked from commit c645d7ac2d367fd5324660c616618e76e6b84729)

9 months agoDo not delete running DAG from the UI (#17630)
Ephraim Anierobi [Mon, 16 Aug 2021 08:20:35 +0000 (09:20 +0100)] 
Do not delete running DAG from the UI (#17630)

When the DAG appear again in the UI and we rerun it, say we have catchup set to True,
those running task instances that were not deleted would be rerun and an external state change
of the task instances would be detected by the LocalTaskJob thereby sending SIGTERM to the task runner

This change resolves this by making sure that DAGs are not deleted when the task instances are still
running

(cherry picked from commit 5a64c1c7cb1161f4db79b3dd47dc8881f23a61b3)

9 months agoSane detection of the host/port in entrypoint prod (#17847)
Jarek Potiuk [Fri, 27 Aug 2021 15:22:15 +0000 (17:22 +0200)] 
Sane detection of the host/port in entrypoint prod (#17847)

The previous regexp parsing was well, not perfect closely following the
ancient Chinese proverb "If you have problem, introduce regexp - you
will have two problems".

This PR replaces regexp matching with python urlsplit method.

Fixes: #17828
(cherry picked from commit 275e0d1b91949ad1a1b916b0ffa27009e0797fea)

9 months agoMove instriuctions of constraint/image refreshing to dev
Jarek Potiuk [Mon, 23 Aug 2021 09:35:44 +0000 (11:35 +0200)] 
Move instriuctions of constraint/image refreshing to dev

When we have a prolonged issue with flaky tests or Github runners
instabilities, our automated constraint and image refresh might
not work, so we might need to manually refresh the constraints
and images. Documentation about that was in CONTRIBUTING.rst
but it is more appriate to keep it in ``dev`` as it only applies
to committers.

Also during testing the parallell refresh without delays an error
was discovered  which prevented parallell check of random image
hash during the build. This has been fixed and parallell
image cache building should work flawlessly now.

(cherry picked from commit 36c5fd3df9b271702e1dd2d73c579de3f3bd5fc0)

9 months agoEager upgrade for Airflow 2.1. should now include celery 4 limit
Jarek Potiuk [Thu, 9 Sep 2021 17:43:55 +0000 (19:43 +0200)] 
Eager upgrade for Airflow 2.1. should now include celery 4 limit

Since we released Celery provider with celery 5, we should
limit celery to < 5 for Airlfow 2.1  EAGER_UPGRADE limits.

EAGER_UPGRADE limits are only used during constraint generation.

9 months agoFix constraints generation scripts. (#18094)
Jarek Potiuk [Thu, 9 Sep 2021 16:32:08 +0000 (18:32 +0200)] 
Fix constraints generation scripts. (#18094)

We are now generatnung constraints with better description, and
we include information about DEFAULT_BRANCH (main/v2-1-test etc.)

The scripts to generate the constraints need to get teh variable
passed to docker.

Also names of generated files were wrong. The constraints did
not update the right constraint files.

(cherry picked from commit afd4ba666149b27a4aab7e15c8d76ed1fd4f134a)

9 months agoAdd Python2 to installed packages (#18037)
Jarek Potiuk [Sun, 5 Sep 2021 14:35:27 +0000 (16:35 +0200)] 
Add Python2 to installed packages (#18037)

As of August 2021, the buster-slim python images, no longer
contain python2 packages. We still support running Python2 via
PythonVirtualenvOperator and our tests started to fail when
we run the tests in `main` - those tests always pull and build
the images using latest-available buster-slim images.

Our system to prevent PR failures in this case has proven to be
useful - the main tests failed to succeed so the base images
we have are still using previous buster-slim images which still
contain Python 2.

This PR adds python2 to installed packages - on both CI images
and PROD images. For CI images it is needed to pass tests, for
PROD images, it is needed for backwards-compatibility.

(cherry picked from commit 6898a2f8a587adacd97beec739ad63c35bfe5537)

9 months agoFix building documentation broken by upgrade of dnspython (#18046)
Jarek Potiuk [Mon, 6 Sep 2021 18:44:11 +0000 (20:44 +0200)] 
Fix building documentation broken by upgrade of dnspython (#18046)

The automated upgrade of dependencies in main broken building of
Airflow documentation in main build.

After a lot of experimentation, It has been narrowed down
to upgrade of dnspython from 1.16.0 to 2.+ which was brought
by upgrading eventlet to 0.32.0.

This PR limits the dnspython library to < 2.0.0. An issue
has been opened:
https://github.com/rthalley/dnspython/issues/681

(cherry picked from commit 022b4e0bccb91c2ed829adf9e5e6b83dbf352673)

9 months agoReapply "Build CI images for the merge result of a PR, not the tip of the PR (#18060...
Ash Berlin-Taylor [Wed, 8 Sep 2021 13:27:50 +0000 (14:27 +0100)] 
Reapply "Build CI images for the merge result of a PR, not the tip of the PR (#18060)" (#18086)

This reverts commit 0dba2e0d644ab0bd2512144231b56463218a3b74.

Revert "Revert "Build CI images for the merge result of a PR, not the tip of the PR (#18060)" (#18063)" (#18086)

(cherry picked from commit 9496235959f6ffaacb69ed391a6ddb82214e9132)

9 months agoImprove the description of how to handle dynamic task generation (#17963)
Jarek Potiuk [Mon, 6 Sep 2021 08:40:17 +0000 (10:40 +0200)] 
Improve the description of how to handle dynamic task generation (#17963)

The Top-Level best practices were a little misleading. They
suggested that no code should be written at the top-level DAG other
than just creating operators, but the story is a little more nuanced.

Better explanation is give and also examples on how you can deal
with the situation when you need to generate your data based on
some meta-data. From Slack discussion it seems that it is not
obvious at all what are the best ways to handle that so two
alternatives were presented with generating a meta-data file
and generating an importable python code containing the meta-data.

During that change, I noticed also, that config sections and
config variables were not sorted - which made it very difficult to
search for them in the index. All the config variables are now
sorted so the references to the righ sections/variables make much
more sense now.

(cherry picked from commit 1be3ef635fab635f741b775c52e0da7fe0871567)

9 months agoSuggest to use secrets backend for variable when it contains sensitive data (#17319)
Kan Ouivirach [Mon, 2 Aug 2021 20:43:12 +0000 (03:43 +0700)] 
Suggest to use secrets backend for variable when it contains sensitive data (#17319)

(cherry picked from commit 2c1880a90712aa79dd7c16c78a93b343cd312268)

9 months agoFix constraint generation properly (#17964)
Jarek Potiuk [Thu, 2 Sep 2021 09:24:16 +0000 (11:24 +0200)] 
Fix constraint generation properly (#17964)

The #17939 did not fix the problem finally. It turned out that
one more change was needed - since we now always upgrade to latest
dependencies in `push` and `schedule` type of build we do not need
to check for the variable UPGRADE_TO_NEWER_DEPENDENCIES (which
was not set in "Build Image" step.

This fixes it, but also changes the constraint generation to add
comments in the generated constraint files, describing how and
why the files are generated.

(cherry picked from commit bec006e418706f11d92271d0b9f2a46afccc80e2)

10 months agoImprove discoverability of Provider packages' functionality
Jarek Potiuk [Sat, 21 Aug 2021 21:10:31 +0000 (23:10 +0200)] 
Improve discoverability of Provider packages' functionality

The documentation of provider packages was rather disconnected
from the apache-airlfow documentation. It was hard to find the
ways how the apache airflow's core extensions are implemented by
the community managed providers - you needed to know what you were
looking for, and you could not find links to the summary of the
core-functionality extended by providers when you were looking at
the functionality (like logging/secret backends/connections/auth)

This PR inroduces much more comprehensive cross-linking between
the airflow core functionalithy and the community-managed providers
that are providing extensions to the core functionality.

(cherry picked from commit bcc76656844be47f923527c0a6cd1de546655cb4)

10 months agoUpdate description about the new ``connection-types`` provider meta-data
Jarek Potiuk [Sat, 21 Aug 2021 10:12:39 +0000 (12:12 +0200)] 
Update description about the new ``connection-types`` provider meta-data

The ``hook-class-names`` provider's meta-data property has been deprecated and
is now replaced by ``connection-types`` property. This documents the
change.

(cherry picked from commit be75dcd39cd10264048c86e74110365bd5daf8b7)

10 months agomake the providers operators/hooks reference much more usable (#17768)
Jarek Potiuk [Sat, 21 Aug 2021 17:47:13 +0000 (19:47 +0200)] 
make the providers operators/hooks reference much more usable (#17768)

The providers operators/hooks reference contained only top-level list of
groups of providers, which make them less-usable than they could be as
the users did not see at this page links to particular operators/hooks,
it was not really visible what is "available" (discoverability) and
the more detailed "Service" and "Transfer" pages are not really
readable enough to give "at a glance" overview what is available.

This change improves that, removes the repeated multiple times
"operators and hooks" which was kind of annoying, and increases
the TOC-level to 3 giving a nice overview of all available and
exposed operator and hooks.

(cherry picked from commit c7f37a946dae612b382497c3252b60a821a05f1f)

10 months agoBump `pip` version to `21.2.4` (#17746)
Kaxil Naik [Fri, 20 Aug 2021 18:42:03 +0000 (19:42 +0100)] 
Bump `pip` version to `21.2.4` (#17746)

Updates `pip` version from `21.2.2` to `21.2.4`

(cherry picked from commit ebf3b4a5b593fb30196cabf4814e6af8b97738cd)

10 months agoDoc: Fix replacing Airflow version for Docker stack (#17711)
Kaxil Naik [Thu, 19 Aug 2021 09:02:58 +0000 (10:02 +0100)] 
Doc: Fix replacing Airflow version for Docker stack (#17711)

currently it shows up as:

```
apache/airflow:|version| - the versioned Airflow image with default Python version (3.6 currently)
```

Example: http://apache-airflow-docs.s3-website.eu-central-1.amazonaws.com/docs/docker-stack/index.html or even https://airflow.apache.org/docs/docker-stack/index.html

This commit fixes it

(cherry picked from commit 8cdda204e1a25eefbe5c9c05de8b62311c34e4e4)

10 months agoImprove cross-links to operators and hooks references (#17622)
Kamil Breguła [Sun, 15 Aug 2021 15:19:13 +0000 (17:19 +0200)] 
Improve cross-links to operators and hooks references (#17622)

* Improve cross-links to operators and hooks references

* fixup! Improve cross-links to operators and hooks references

* Update docs/apache-airflow/concepts/operators.rst

(cherry picked from commit cff5f18a8e86aee057975e82d2bec0de6c5cbe19)

10 months agoBump ``sphinxcontrib-spelling`` and minor improvements (#16675) 17673/head 2.1.3 2.1.3rc1
Kaxil Naik [Sat, 26 Jun 2021 17:33:22 +0000 (18:33 +0100)] 
Bump ``sphinxcontrib-spelling`` and minor improvements (#16675)

- Bump `sphinxcontrib-spelling` from `5.2.1` to `7.2.1`
- Excludes `project.rst` and `changelog.rst` from spell-check for `apache-airflow` package so that we don't need to add Committer's Name everytime.
- Removes committers name and ``'airfl%'`` from `docs/spelling_wordlist.txt` as it isn't needed. It should be a code-block not an actual word.

(cherry picked from commit 3a57d9fc604f4478fd51e20287494d0d7a33f0e4)

10 months agoAdd Aneesh Joseph as Airflow Committer (#16835)
Kaxil Naik [Tue, 6 Jul 2021 15:08:55 +0000 (16:08 +0100)] 
Add Aneesh Joseph as Airflow Committer (#16835)

https://lists.apache.org/thread.html/r2995b1c1614aa1f9b0b8b5c1ee27dbb285016b203ae5111147b2d488%40%3Cdev.airflow.apache.org%3E
(cherry picked from commit 1eed6b4f37ddf2086bf06fb5c4475c68fadac0f9)

10 months agoAdd new committers: ``Jed`` and ``TP`` (#16671)
Kaxil Naik [Sat, 26 Jun 2021 08:04:57 +0000 (09:04 +0100)] 
Add new committers: ``Jed`` and ``TP`` (#16671)

Announcement Email: https://lists.apache.org/thread.html/rae56495ae62fc28cfe1a88e9d28043d78fdbdb611e8a8437bb044ae4%40%3Cdev.airflow.apache.org%3E

(cherry picked from commit 1a532eb3fad188f6cffdbdc7c1a29a8d0e0e2860)

10 months agoAdd Changelog updates for 2.1.3
James Timmins [Tue, 17 Aug 2021 01:39:18 +0000 (18:39 -0700)] 
Add Changelog updates for 2.1.3

Add Changelog updates for 2.1.3 (#17644)

(cherry picked from commit 808fb2ad3024f4855fb11a99128b9f67bad44a26)
Co-Authored-By: Kaxil Naik <kaxilnaik@gmail.com>
10 months agoForces rebuilding the image for cache pushing
Jarek Potiuk [Mon, 16 Aug 2021 14:07:47 +0000 (16:07 +0200)] 
Forces rebuilding the image for cache pushing

Fixes bug in pushing latest image to cache on "push/schedule".

When the build is successful and passes all tests vi either
`push' or 'schedule' events, we attempt to rebuild the image
with latest constraints just pushed and push it as a fresh
cache for Github Registry. This keeps the time to build image
small without manually refreshing the cache, it also automatically
checks if there is a new "python" base image available so that
we can use it in the new cache.

There was a bug that the image has not been FORCE_PULLED and
rebuilt in this case - just latest images were used.

This had so far no negative effects because due to test
instability, latest main images pretty much never succeeded in
all tests, so the images in `main` were refreshed manually
periodically anyway. However for v2-1-test the scope of tests
run is far smaller now (no Helm tests, no Provider tests)
and they succeed mostly when they should.

Also PROD image was built without ".dev0" suffix which
also failed.

This PR fixes it so that the images are built properly and pushed.

(cherry picked from commit dac71ef45fdbeba585ddb5b4211b31ef8643371f)

10 months agoImprove validation of Group id (#17578)
Jarek Potiuk [Fri, 13 Aug 2021 15:33:31 +0000 (17:33 +0200)] 
Improve validation of Group id (#17578)

When Group id of task group is used to prefix task id, it should
follow the same limitation that task_id has, plus it should not
have '.'. The '.' is used to separate groups in task id
so it should not be allowed in the group id.

If this is not checked at Task Group creation time, users will
get messages about invalid task id during deserialization
and it's not entirely obvoius where the error came from
and it crashes the scheduler..

Also this validation will be performed at parsing time, rather
than at deserialization time and the DAG will not even get
serialized, so it will not crash the scheduler.

Fixes: #17568
(cherry picked from commit 833e1094a72b5a09f6b2249001b977538f139a19)

10 months agoImprove `dag_maker` fixture (#17324)
Ephraim Anierobi [Mon, 2 Aug 2021 06:37:40 +0000 (07:37 +0100)] 
Improve `dag_maker` fixture (#17324)

This PR improves the dag_maker fixture to enable creation of dagrun, dag and dag_model separately

Co-authored-by: Tzu-ping Chung <uranusjr@gmail.com>
(cherry picked from commit 5c1e09cafacea922b9281e901db7da7cadb3e9be)

10 months agoUse dag_maker fixture in test_backfill_job.py (#17118)
Ephraim Anierobi [Thu, 22 Jul 2021 08:40:33 +0000 (09:40 +0100)] 
Use dag_maker fixture in test_backfill_job.py (#17118)

This change uses the dag_maker fixture in tests

fixup! Use dag_maker fixture in test_backfill_job.py

fixup! fixup! Use dag_maker fixture in test_backfill_job.py

(cherry picked from commit 9f043cf7dbd83ce22a6af10a9d005a00de6f02b7)

10 months agoFix redacting secrets in context exceptions. (#17618)
Jarek Potiuk [Sat, 14 Aug 2021 20:49:03 +0000 (22:49 +0200)] 
Fix redacting secrets in context exceptions. (#17618)

* Fix redacting secrets in context exceptions.

Secret masking did not work in implicit and
explicit context exceptions (see
https://www.python.org/dev/peps/pep-3134/)
When there was a `try/except/raise` sequence,
or `raise ... from` exception - the original
exceptions were not redacted.

Related: #17604

(cherry picked from commit 6df3ee7997e335eb7d353d4ec0f5c2dd3a0e0d26)

10 months agoUpdate documentation regarding Python 3.9 support (#17611)
Gabe Flores [Sat, 14 Aug 2021 00:15:44 +0000 (19:15 -0500)] 
Update documentation regarding Python 3.9 support (#17611)

https://github.com/apache/airflow#requirements

(cherry picked from commit 721d4e7c60cbccfd064572f16c3941f41ff8ab3a)

10 months agoBump version to 2.1.3
Kaxil Naik [Wed, 28 Jul 2021 15:00:25 +0000 (16:00 +0100)] 
Bump version to 2.1.3

10 months agoFix task retries when they receive sigkill and have retries and properly handle sigte...
Ephraim Anierobi [Wed, 28 Jul 2021 14:57:35 +0000 (15:57 +0100)] 
Fix task retries when they receive sigkill and have retries and properly handle sigterm (#16301)

Currently, tasks are not retried when they receive SIGKILL or SIGTERM even if the task has retry. This change fixes it
and added test for both SIGTERM and SIGKILL so we don't experience regression

Also, SIGTERM sets the task as failed and raises AirflowException which heartbeat sometimes see as externally set to fail
and not call failure_callbacks. This commit also fixes this by calling handle_task_exit when a task gets SIGTERM

Co-authored-by: Ash Berlin-Taylor <ash_github@firemirror.com>
(cherry picked from commit 4e2a94c6d1bde5ddf2aa0251190c318ac22f3b17)

10 months agoAdd Pytest fixture to create dag and dagrun and use it on local task job tests (...
Ephraim Anierobi [Tue, 20 Jul 2021 17:48:35 +0000 (18:48 +0100)] 
Add Pytest fixture to create dag and dagrun and use it on local task job tests (#16889)

This change adds pytest fixture to create dag and dagrun then use it on local task job tests

Co-authored-by: Tzu-ping Chung <uranusjr@gmail.com>
(cherry picked from commit 7c0d8a2f83cc6db25bdddcf6cecb6fb56f05f02f)

10 months agoFix race condition with dagrun callbacks (#16741)
Jed Cunningham [Thu, 29 Jul 2021 17:05:02 +0000 (11:05 -0600)] 
Fix race condition with dagrun callbacks (#16741)

Instead of immediately sending callbacks to be processed, wait until
after we commit so the dagrun.end_date is guaranteed to be there when
the callback runs.

(cherry picked from commit fb3031acf51f95384154143553aac1a40e568ebf)

10 months agoAdd 'queued' to DagRunState (#16854)
Ephraim Anierobi [Wed, 7 Jul 2021 20:37:22 +0000 (21:37 +0100)] 
Add 'queued' to DagRunState (#16854)

This change adds 'queued' to DagRunState and improved typing for DagRun state

Co-authored-by: Kaxil Naik <kaxilnaik@gmail.com>
(cherry picked from commit 5a5f30f9133a6c5f0c41886ff9ae80ea53c73989)

10 months agoAdd 'queued' state to DagRun (#16401)
Ephraim Anierobi [Tue, 6 Jul 2021 14:03:27 +0000 (15:03 +0100)] 
Add 'queued' state to DagRun (#16401)

This change adds queued state to DagRun. Newly created DagRuns
start in the queued state, are then moved to the running state after
satisfying the DAG's max_active_runs. If the Dag doesn't have
max_active_runs, the DagRuns are moved to running state immediately

Clearing a DagRun sets the state to queued state

Closes: #9975, #16366
(cherry picked from commit 6611ffd399dce0474d8329720de7e83f568df598)

10 months agoMove DagFileProcessor and DagFileProcessorProcess out of scheduler_job.py (#16581)
Ephraim Anierobi [Fri, 25 Jun 2021 04:36:56 +0000 (05:36 +0100)] 
Move DagFileProcessor and DagFileProcessorProcess out of scheduler_job.py (#16581)

This change moves DagFileProcessor and DagFileProcessorProcess out of scheduler_job.py.

Also, dag_processing.py was moved out of airflow/utils.

(cherry picked from commit 88ee2aa7ddf91799f25add9c57e1ea128de2b7aa)

10 months agoRun mini scheduler in LocalTaskJob during task exit (#16289)
Ephraim Anierobi [Thu, 10 Jun 2021 13:29:30 +0000 (14:29 +0100)] 
Run mini scheduler in LocalTaskJob during task exit (#16289)

Currently, the chances of tasks being killed by the LocalTaskJob heartbeat is high.

This is because, after marking a task successful/failed in Taskinstance.py and mini scheduler is enabled,
we start running the mini scheduler. Whenever the mini scheduling takes time and meet the next job heartbeat,
the heartbeat detects that this task has succeeded with no return code because LocalTaskJob.handle_task_exit
was not called after the task succeeded. Hence, the heartbeat thinks that this task was externally marked failed/successful.

This change resolves this by moving the mini scheduler to LocalTaskJob at the handle_task_exit method ensuring
that the task will no longer be killed by the next heartbeat

(cherry picked from commit 408bd26c22913af93d05aa70abc3c66c52cd4588)

10 months agoFix external elasticsearch logs link (#16357)
Jed Cunningham [Tue, 15 Jun 2021 15:40:01 +0000 (09:40 -0600)] 
Fix external elasticsearch logs link (#16357)

During the 2.0 upgrade, the external log link when using elasticsearch
remote logs was broken. This fixes it, including it only being shown if
`[elasticsearch] frontend` is set.

(cherry picked from commit e31e515b28a745b7428b42f1559ab456305fb3a0)

10 months agoProper warning message when recorded PID is different from current PID (#17411)
Ephraim Anierobi [Wed, 4 Aug 2021 12:32:05 +0000 (13:32 +0100)] 
Proper warning message when recorded PID is different from current PID (#17411)

Currently, when the recorded PID is different from the current PID, in
the case of run_as_user, the warning is not clear because ti.pid is used
as the recorded PID instead of parent process of ti.pid. In this case,
users would see that the PIDs are the same but there was a warning that
they are not the same

This change fixes it.

(cherry picked from commit a4b6f1c1c5ab92fd5b623f119263d83bd46ab2e6)

10 months ago Fix running tasks with default_impersonation config (#17229)
Ephraim Anierobi [Wed, 28 Jul 2021 15:00:25 +0000 (16:00 +0100)] 
 Fix running tasks with default_impersonation config (#17229)

When default_impersonation is set in the configuration, airflow fails
 to run task due to PID mismatch between the recorded PID and the current PID

 This change fixes it by checking if task_runner.run_as_user is True and use the
 same way we check when ti.run_as_user is true to check the PID

(cherry picked from commit 40419dd371c7be53e6c8017b0c4d1bc7f75d0fb6)

10 months agoRescue if a DagRun's DAG was removed from db (#17544)
Tzu-ping Chung [Thu, 12 Aug 2021 23:44:21 +0000 (07:44 +0800)] 
Rescue if a DagRun's DAG was removed from db (#17544)

Fix #17442.

The exception happens when a DAG is removed from the database (via web UI or something else), but there are still unfinished runs associated to it. This catches the scenario and use the existing fallback setting `max_active_runs` to zero.

(cherry picked from commit 60ddcd10bbe5c2375b14307456b8e5f76c1d0dcd)

10 months agoFixed broken json_client (#17529)
sw1010 [Tue, 10 Aug 2021 11:26:54 +0000 (13:26 +0200)] 
Fixed broken json_client (#17529)

The json_client depends on httpx and thus the response doesn't contain
the attribute 'ok'. In consequence, the missing attribute has been changed
to is_error.

closes: #17527

Co-authored-by: Szymon Wojciechowski <szymon.wojciechowski@here.com>
(cherry picked from commit fbddefe5cbc0fe163c42ab070bc0d7e44c5cef5b)

10 months agoAdd missing permissions to varimport (#17468)
Ash Berlin-Taylor [Fri, 6 Aug 2021 15:22:50 +0000 (16:22 +0100)] 
Add missing permissions to varimport (#17468)

(cherry picked from commit eb6af07f5bc8958efd06818e84a5273a079304e1)

10 months agoOptimize context sent for docker build (#17415)
Jarek Potiuk [Wed, 4 Aug 2021 13:56:52 +0000 (15:56 +0200)] 
Optimize context sent for docker build (#17415)

The `provider_packages` folder is not needed during docker build
and it often contains copied sources when building the provider
packages. Also _doctree folder is prepared during documentation
building. This makes `docker build` wait for a few seconds when
those directories have a lot of files.

Excluding those decreases docker build overhead significantly.

(cherry picked from commit dfefc66dfb9ae907dc5f49bb4ec7dd65daecd044)

10 months agoHandle and log exceptions raised during task callback (#17347)
Sam Wheating [Fri, 6 Aug 2021 10:35:13 +0000 (03:35 -0700)] 
Handle and log exceptions raised during task callback (#17347)

Add missing exception handling in success/retry/failure callbacks

(cherry picked from commit faf9f731fa8810e05f868ffec989ea042381ada4)

10 months agoFix CLI 'kubernetes cleanup-pods' which fails on invalid label key (#17298)
Damir Lampa [Thu, 29 Jul 2021 20:17:51 +0000 (14:17 -0600)] 
Fix CLI 'kubernetes cleanup-pods' which fails on invalid label key (#17298)

Fix for #16013 - CLI 'kubernetes cleanup-pods' fails on invalid label key

(cherry picked from commit 36bdfe8d0ef7e5fc428434f8313cf390ee9acc8f)

10 months agoShow serialization exceptions in DAG parsing log (#17277)
Jed Cunningham [Wed, 28 Jul 2021 16:51:21 +0000 (10:51 -0600)] 
Show serialization exceptions in DAG parsing log (#17277)

Make sure that any exceptions that happen when writing serialized DAGs
to the db get written to the DAG parsing log, instead of only being added
to `import_errors` for consumption via the UI.

(cherry picked from commit 9cd5a97654fa82f1d4d8f599e8eb81957b3f7286)

10 months agoDo not seek error file when it is closed (#17187)
Ephraim Anierobi [Sun, 25 Jul 2021 15:19:18 +0000 (16:19 +0100)] 
Do not seek error file when it is closed (#17187)

We do not check if error file is closed before we seek it, which causes exceptions.
Sometimes, this error file does not exist e.g when the task state is changed externally.

This change fixes it by returning None when the file is closed so that custom text can be used for error.

Co-authored-by: Jed Cunningham <66968678+jedcunningham@users.noreply.github.com>
(cherry picked from commit 01a0aca249eeaf71d182bf537b9d04121257ac09)

10 months agoFix: ``TaskInstance`` does not show ``queued_by_job_id`` & ``external_executor_id...
Jorrick Sleijster [Thu, 22 Jul 2021 22:25:08 +0000 (00:25 +0200)] 
Fix: ``TaskInstance`` does not show ``queued_by_job_id`` & ``external_executor_id`` (#17179)

**Problem discovery:**
I was debugging a bug with the `external_executor_id` Airflow after which this UI bug caught my eye and I got annoyed by it. I figured to fix this one first so my other testing can go a bit smoother :)

**Description of the problem:**
Currently there is a BUG inside the Task Instance details (/task) view.
It loads the TaskInstance by calling `TI(task, execution_date)` and then uses `refresh_from_db()` to refresh many fields that are no filled in yet.
However, the assumption is made in that case that it refreshes all values, which it does not.
`external_executor_id` and `queued_by_job_id` are not updated at all and `executor_config` is only instantiated by the original `TI(task, execution_date)` call but also not updated in `refresh_from_db()`.
This also shows in the UI where these values are always showing None, while the TaskInstance view shows you these values are not None.

**The changes in the PR:**
1. Changes to the `update_from_db()` method to include the missing three values.
2. A new test that checks we are really updating ALL values in `update_from_db()`
3. Removal of an incorrect comment as we do need the `execution_date` for that view.

(cherry picked from commit 759c76d7a5d23cc6f6ef4f724a1a322d2445bbd2)

10 months agoSwitch test_backfill_job.py from unittest to pytest style (#17112)
Ephraim Anierobi [Tue, 20 Jul 2021 20:43:01 +0000 (21:43 +0100)] 
Switch test_backfill_job.py from unittest to pytest style (#17112)

Prep work to use pytest fixtures in these tests

(cherry picked from commit 960da8a9074a4fb58881ea79f7dc9bc8fd58a5c4)

10 months agoAdds more explanatory message when SecretsMasker is not configured (#17101)
Jarek Potiuk [Tue, 20 Jul 2021 08:51:59 +0000 (10:51 +0200)] 
Adds more explanatory message when SecretsMasker is not configured (#17101)

The secrets masker added in 2.1.0 introduced requirement that
at least one SecretsMasker needs to be configured per task.

However this introduced problems for several users who migrated
from Airflow 1.10 and had their custom logging configuration
done without first copying the base airflow configuration.

The message about missing SecretsMasker was pretty cryptic for the
users. This PR changes the message to be much more descriptive
and pointing the user to the right place in documentation
explaining how advanced logging configuration should be done.

(cherry picked from commit 3a2e162387b5d73f1badda8fcf027fbc2caa0f28)

10 months ago#16976 Add json.dumps() for templated fields objects: 'dict' and 'list' (#17082)
Vladimir Aranovsky [Mon, 19 Jul 2021 19:22:42 +0000 (22:22 +0300)] 
#16976 Add json.dumps() for templated fields objects: 'dict' and 'list' (#17082)

(cherry picked from commit 1a0730a08f2d72cd71447b6d6549ec10d266dd6a)

10 months agoCore: Enable the use of __init_subclass__ in subclasses of BaseOperator (#17027)
Henry Zhang [Thu, 22 Jul 2021 22:23:51 +0000 (15:23 -0700)] 
Core: Enable the use of __init_subclass__ in subclasses of BaseOperator (#17027)

This fixes a regression in 2.1 where subclasses of BaseOperator could no
longer use `__init_subclass__` to allow class instantiation time
customization.

Related BPO: https://bugs.python.org/issue29581
Fixes: https://github.com/apache/airflow/issues/17014

(cherry picked from commit 901513203f287d4f8152f028e9070a2dec73ad74)

10 months agoFix UPDATING.md (#16933)
Kaxil Naik [Mon, 12 Jul 2021 00:21:01 +0000 (01:21 +0100)] 
Fix UPDATING.md (#16933)

(cherry picked from commit 543c31f76066592d356ef1a283888f3507fd968d)

10 months agoFixed task instance retrieval in XCom view (#16923)
Pietro [Sun, 11 Jul 2021 14:54:34 +0000 (16:54 +0200)] 
Fixed task instance retrieval in XCom view (#16923)

The SQL logical "and" was not implemented correctly and hence the filter was returning wrong results

(cherry picked from commit 9a1fc19a627662122dd8dacee2ef61c3edf97b85)

10 months agoDon't check execution_date in refresh_from_db (#16809)
Tzu-ping Chung [Wed, 7 Jul 2021 11:04:15 +0000 (19:04 +0800)] 
Don't check execution_date in refresh_from_db (#16809)

The native sqlalchemy DateTime type does not compare well when timezones
don't match. This can happen if the current execution_date on a DagRun
instance is not in UTC (the db entry is always in UTC).

Since DagRun has a unique constraint on (dag_id, run_id), these two
should be able to return one unique result, and the executrion_date
column should not be needed anyway. Let's just remove that filter to
prevent all the datetime comparison trouble.

(cherry picked from commit faffaec73385db3c6910d31ccea9fc4f9f3f9d42)