-
Notifications
You must be signed in to change notification settings - Fork 14.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix webserver exiting when gunicorn master crashes. Closes #13469 #13470
Fix webserver exiting when gunicorn master crashes. Closes #13469 #13470
Conversation
Congratulations on your first Pull Request and welcome to the Apache Airflow community! If you have any issues or are unsure about any anything please check our Contribution Guide (https://github.com/apache/airflow/blob/master/CONTRIBUTING.rst)
|
@drago-f5a can you create a new PR for Airflow 2.0? We do not accept new changes to Airflow 1.10, unless they have already been merged to Airflow 2.0 It would still be nice to add tests to prevent regression also.
Thanks for finding this bug. I suspect it might not have been easy. |
2070aaf
to
a702693
Compare
@drago-f5a @potiuk Is this still relevant or should this PR be closed? |
@jhtimmins I believe the plan is to backport #13518 to 1.10.15. However, given the CLI reorganization that occurred between 1.10.x and 2.0.0, the commit from #13518 can not be cherry-picked into v1-10-stable branch. This PR here is essentially the backport, minus the tests. If it seems like I am dancing around answering the question, it's only because I am not familiar with the backporting process you follow. Should this PR be used for the purpose of backporting? If yes, should we also backport the tests from #13518? Let me know if I can be of any help to move this forward. |
The PR most likely needs to run full matrix of tests because it modifies parts of the core of Airflow. However, committers might decide to merge it quickly and take the risk. If they don't merge it quickly - please rebase it to the latest master at your convenience, or amend the last commit of the PR, and push it with --force-with-lease. |
a702693
to
7179912
Compare
The Workflow run is cancelling this PR. Building images for the PR has failed. Follow the the workflow link to check the reason. |
Apache Airflow 1.10.15 - Fix `airflow db upgrade` to upgrade db as intended (apache#13267) - Moved boto3 limitation to snowflake (apache#13286) - `KubernetesExecutor` should accept images from `executor_config` (apache#13074) - Scheduler should acknowledge active runs properly (apache#13803) - Bugfix: Unable to import Airflow plugins on Python 3.8 (apache#12859) - Include `airflow/contrib/executors` in the dist package - Pin Click version for Python 2.7 users - Ensure all statsd timers use millisecond values. (apache#10633) - [`kubernetes_generate_dag_yaml`] - Fix dag yaml generate function (apache#13816) - Fix `airflow tasks clear` cli command wirh `--yes` (apache#14188) - Fix permission error on non-POSIX filesystem (apache#13121) (apache#14383) - Fixed deprecation message for "variables" command (apache#14457) - BugFix: fix the `delete_dag` function of json_client (apache#14441) - Fix merging of secrets and configmaps for `KubernetesExecutor` (apache#14090) - Fix webserver exiting when gunicorn master crashes (apache#13470) - Bump ini from 1.3.5 to 1.3.8 in `airflow/www_rbac` - Bump datatables.net from 1.10.21 to 1.10.23 in `airflow/www_rbac` - Webserver: Sanitize string passed to origin param (apache#14738) - Make `rbac_app`'s `db.session` use the same timezone with `@provide_session` (apache#14025) - Adds airflow as viable docker command in official image (apache#12878) - `StreamLogWriter`: Provide (no-op) close method (apache#10885) - Add 'airflow variables list' command for 1.10.x transition version (apache#14462) - Update URL for Airflow docs (apache#13561) - Clarifies version args for installing 1.10 in Docker (apache#12875)
Apache Airflow 1.10.15 - Fix `airflow db upgrade` to upgrade db as intended (apache#13267) - Moved boto3 limitation to snowflake (apache#13286) - `KubernetesExecutor` should accept images from `executor_config` (apache#13074) - Scheduler should acknowledge active runs properly (apache#13803) - Bugfix: Unable to import Airflow plugins on Python 3.8 (apache#12859) - Include `airflow/contrib/executors` in the dist package - Pin Click version for Python 2.7 users - Ensure all statsd timers use millisecond values. (apache#10633) - [`kubernetes_generate_dag_yaml`] - Fix dag yaml generate function (apache#13816) - Fix `airflow tasks clear` cli command wirh `--yes` (apache#14188) - Fix permission error on non-POSIX filesystem (apache#13121) (apache#14383) - Fixed deprecation message for "variables" command (apache#14457) - BugFix: fix the `delete_dag` function of json_client (apache#14441) - Fix merging of secrets and configmaps for `KubernetesExecutor` (apache#14090) - Fix webserver exiting when gunicorn master crashes (apache#13470) - Bump ini from 1.3.5 to 1.3.8 in `airflow/www_rbac` - Bump datatables.net from 1.10.21 to 1.10.23 in `airflow/www_rbac` - Webserver: Sanitize string passed to origin param (apache#14738) - Make `rbac_app`'s `db.session` use the same timezone with `@provide_session` (apache#14025) - Adds airflow as viable docker command in official image (apache#12878) - `StreamLogWriter`: Provide (no-op) close method (apache#10885) - Add 'airflow variables list' command for 1.10.x transition version (apache#14462) - Update URL for Airflow docs (apache#13561) - Clarifies version args for installing 1.10 in Docker (apache#12875)
Apache Airflow 1.10.15 - Fix `airflow db upgrade` to upgrade db as intended (apache#13267) - Moved boto3 limitation to snowflake (apache#13286) - `KubernetesExecutor` should accept images from `executor_config` (apache#13074) - Scheduler should acknowledge active runs properly (apache#13803) - Bugfix: Unable to import Airflow plugins on Python 3.8 (apache#12859) - Include `airflow/contrib/executors` in the dist package - Pin Click version for Python 2.7 users - Ensure all statsd timers use millisecond values. (apache#10633) - [`kubernetes_generate_dag_yaml`] - Fix dag yaml generate function (apache#13816) - Fix `airflow tasks clear` cli command wirh `--yes` (apache#14188) - Fix permission error on non-POSIX filesystem (apache#13121) (apache#14383) - Fixed deprecation message for "variables" command (apache#14457) - BugFix: fix the `delete_dag` function of json_client (apache#14441) - Fix merging of secrets and configmaps for `KubernetesExecutor` (apache#14090) - Fix webserver exiting when gunicorn master crashes (apache#13470) - Bump ini from 1.3.5 to 1.3.8 in `airflow/www_rbac` - Bump datatables.net from 1.10.21 to 1.10.23 in `airflow/www_rbac` - Webserver: Sanitize string passed to origin param (apache#14738) - Make `rbac_app`'s `db.session` use the same timezone with `@provide_session` (apache#14025) - Adds airflow as viable docker command in official image (apache#12878) - `StreamLogWriter`: Provide (no-op) close method (apache#10885) - Add 'airflow variables list' command for 1.10.x transition version (apache#14462) - Update URL for Airflow docs (apache#13561) - Clarifies version args for installing 1.10 in Docker (apache#12875)
As described in #13469, when gunicorn master processes exits, the webserver process continues to run indefinitely, periodically logging an error message.
The method
_spawn_new_workers()
attempts to spawn new workers, and if that fails the webserver is meant to exit. However, this does not currently work due to a logical mistake when computing number of workers to spawn, and a typo (passing current number of workers instead of the count of workers to spawn).Btw, I believe the same issue is present in the 2.0 branch.