-
Notifications
You must be signed in to change notification settings - Fork 16.6k
Fix KEDA query for Kubernetes Executor#55559
Conversation
Description
We noticed that when using a comparison like the one below for a KEDA query there is an issue with null values. Comparisons using '!=' will not return any rows which are null.
https://modern-sql.com/caniuse/is-distinct-from
This becomes a problem if there are tasks in the task_instance table which have not explicitly set an executor (so they just use the default one). So the issue occurs if the CeleryExecutor is set as default executor and the Kubernetes executor is set as additional (non-default) executor.
Then task instances which are up to be executed by the Celery executor will not be considered by the KEDA query and KEDA will scale down the worker count to 0 - which means that tasks waiting to be executed by the Celery executor never be executed.
The SQL comparison using "IS DISTINCT FROM" includes null values. Like this the KEDA query also works if the Celery Executor is set as default executor and tasks do not explicitly set the Executor field.
^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.
jscheffl
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the fix. I assume the tests need to be adjusted
* Adapt unit tests
* Adapt unit tests
* Adapt unit tests
* Adapt unit tests
* Adapt unit tests
* Adapt unit tests
* Adapt unit tests
* Adapt unit tests
* Adapt unit tests
* Adapt unit tests
* Adapt unit tests
* Adapt unit tests
* Adapt unit tests
* Adapt unit tests
* Adapt unit tests
* Adapt unit tests
* Adapt unit tests
* Adapt unit tests
* Adapt unit tests