[jira] [Commented] (AIRFLOW-3124) Broken webserver debug mode (RBAC)
[ https://issues.apache.org/jira/browse/AIRFLOW-3124?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16635101#comment-16635101 ] Iuliia Volkova commented on AIRFLOW-3124: - PR was merged. Could we close the issue? [~ajkosel] [~TaoFeng] > Broken webserver debug mode (RBAC) > -- > > Key: AIRFLOW-3124 > URL: https://issues.apache.org/jira/browse/AIRFLOW-3124 > Project: Apache Airflow > Issue Type: Bug > Components: webapp, webserver >Reporter: Aaron Kosel >Assignee: Aaron Kosel >Priority: Minor > > {code:java} > Traceback (most recent call last): > File "/usr/local/bin/airflow", line 7, in > exec(compile(f.read(), __file__, 'exec')) > File "/airflow/airflow/bin/airflow", line 32, in > args.func(args) > File "/airflow/airflow/utils/cli.py", line 74, in wrapper > return f(*args, **kwargs) > File "/airflow/airflow/bin/cli.py", line 875, in webserver > app.run(debug=True, port=args.port, host=args.hostname, > AttributeError: 'tuple' object has no attribute 'run' > {code} > Nearly the same issue as https://issues.apache.org/jira/browse/AIRFLOW-2204, > but only affecting RBAC debug mode. The problem is that `create_app` returns > a tuple, but the `cli` script expects to just receive the flask app back > without the appbuilder. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (AIRFLOW-3124) Broken webserver debug mode (RBAC)
[ https://issues.apache.org/jira/browse/AIRFLOW-3124?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16632142#comment-16632142 ] ASF GitHub Bot commented on AIRFLOW-3124: - feng-tao closed pull request #3958: [AIRFLOW-3124] Fix RBAC webserver debug mode URL: https://github.com/apache/incubator-airflow/pull/3958 This is a PR merged from a forked repository. As GitHub hides the original diff on merge, it is displayed below for the sake of provenance: As this is a foreign pull request (from a fork), the diff is supplied below (as it won't show otherwise due to GitHub magic): diff --git a/airflow/bin/cli.py b/airflow/bin/cli.py index 1c5494ead1..09bd0c1806 100644 --- a/airflow/bin/cli.py +++ b/airflow/bin/cli.py @@ -870,8 +870,12 @@ def webserver(args): print( "Starting the web server on port {0} and host {1}.".format( args.port, args.hostname)) -app = create_app_rbac(conf) if settings.RBAC else create_app(conf) -app.run(debug=True, port=args.port, host=args.hostname, +if settings.RBAC: +app, _ = create_app_rbac(conf, testing=conf.get('core', 'unit_test_mode')) +else: +app = create_app(conf, testing=conf.get('core', 'unit_test_mode')) +app.run(debug=True, use_reloader=False if app.config['TESTING'] else True, +port=args.port, host=args.hostname, ssl_context=(ssl_cert, ssl_key) if ssl_cert and ssl_key else None) else: os.environ['SKIP_DAGS_PARSING'] = 'True' diff --git a/tests/cli/test_cli.py b/tests/cli/test_cli.py index 93ec0576e6..aeafdd85fe 100644 --- a/tests/cli/test_cli.py +++ b/tests/cli/test_cli.py @@ -139,7 +139,21 @@ def test_ready_prefix_on_cmdline_dead_process(self): self.assertEqual(get_num_ready_workers_running(self.gunicorn_master_proc), 0) def test_cli_webserver_debug(self): -p = psutil.Popen(["airflow", "webserver", "-d"]) +env = os.environ.copy() +p = psutil.Popen(["airflow", "webserver", "-d"], env=env) +sleep(3) # wait for webserver to start +return_code = p.poll() +self.assertEqual( +None, +return_code, +"webserver terminated with return code {} in debug mode".format(return_code)) +p.terminate() +p.wait() + +def test_cli_rbac_webserver_debug(self): +env = os.environ.copy() +env['AIRFLOW__WEBSERVER__RBAC'] = 'True' +p = psutil.Popen(["airflow", "webserver", "-d"], env=env) sleep(3) # wait for webserver to start return_code = p.poll() self.assertEqual( This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > Broken webserver debug mode (RBAC) > -- > > Key: AIRFLOW-3124 > URL: https://issues.apache.org/jira/browse/AIRFLOW-3124 > Project: Apache Airflow > Issue Type: Bug > Components: webapp, webserver >Reporter: Aaron Kosel >Assignee: Aaron Kosel >Priority: Minor > > {code:java} > Traceback (most recent call last): > File "/usr/local/bin/airflow", line 7, in > exec(compile(f.read(), __file__, 'exec')) > File "/airflow/airflow/bin/airflow", line 32, in > args.func(args) > File "/airflow/airflow/utils/cli.py", line 74, in wrapper > return f(*args, **kwargs) > File "/airflow/airflow/bin/cli.py", line 875, in webserver > app.run(debug=True, port=args.port, host=args.hostname, > AttributeError: 'tuple' object has no attribute 'run' > {code} > Nearly the same issue as https://issues.apache.org/jira/browse/AIRFLOW-2204, > but only affecting RBAC debug mode. The problem is that `create_app` returns > a tuple, but the `cli` script expects to just receive the flask app back > without the appbuilder. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (AIRFLOW-3124) Broken webserver debug mode (RBAC)
[ https://issues.apache.org/jira/browse/AIRFLOW-3124?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16629528#comment-16629528 ] ASF GitHub Bot commented on AIRFLOW-3124: - akosel opened a new pull request #3958: [AIRFLOW-3124] Fix RBAC webserver debug mode URL: https://github.com/apache/incubator-airflow/pull/3958 Make sure you have checked _all_ steps below. ### Jira - [x] My PR addresses the following [Airflow Jira](https://issues.apache.org/jira/browse/AIRFLOW-3124) issues and references them in the PR title. ### Description - [x] Here are some details about my PR, including screenshots of any UI changes: The command `airflow webserver -d` crashes when `settings.RBAC == True`. This is because `create_app` currently returns `app, appbuilder`, which causes the app to crash with an `AttributeError`. Reading through the code, it doesn't look like we rely on `appbuilder` being returned by `create_app` anywhere, so it should be safe to remove this. ### Tests - [x] My PR adds the following unit tests I set up the CLI to pass in the `unit_test_mode` setting to the flask app so we can disable the werkzeug reloader when running tests. If the reloader runs, there is an extra monitoring process left running after killing the main webserver process. This causes conflicts if multiple tests rely on being able to start a webserver (as the process will not be able to bind to the default socket). ### Commits - [x] My commits all reference Jira issues in their subject lines, and I have squashed multiple commits if they address the same issue. In addition, my commits follow the guidelines from "[How to write a good git commit message](http://chris.beams.io/posts/git-commit/)": 1. Subject is separated from body by a blank line 1. Subject is limited to 50 characters (not including Jira issue reference) 1. Subject does not end with a period 1. Subject uses the imperative mood ("add", not "adding") 1. Body wraps at 72 characters 1. Body explains "what" and "why", not "how" ### Code Quality - [x] Passes `git diff upstream/master -u -- "*.py" | flake8 --diff` This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > Broken webserver debug mode (RBAC) > -- > > Key: AIRFLOW-3124 > URL: https://issues.apache.org/jira/browse/AIRFLOW-3124 > Project: Apache Airflow > Issue Type: Bug > Components: webapp, webserver >Reporter: Aaron Kosel >Assignee: Aaron Kosel >Priority: Minor > > {code:java} > Traceback (most recent call last): > File "/usr/local/bin/airflow", line 7, in > exec(compile(f.read(), __file__, 'exec')) > File "/airflow/airflow/bin/airflow", line 32, in > args.func(args) > File "/airflow/airflow/utils/cli.py", line 74, in wrapper > return f(*args, **kwargs) > File "/airflow/airflow/bin/cli.py", line 875, in webserver > app.run(debug=True, port=args.port, host=args.hostname, > AttributeError: 'tuple' object has no attribute 'run' > {code} > Nearly the same issue as https://issues.apache.org/jira/browse/AIRFLOW-2204, > but only affecting RBAC debug mode. The problem is that `create_app` returns > a tuple, but the `cli` script expects to just receive the flask app back > without the appbuilder. -- This message was sent by Atlassian JIRA (v7.6.3#76005)