Dan Davydov created AIRFLOW-1288: ------------------------------------ Summary: Bad owners field in DAGs breaks Airflow front page Key: AIRFLOW-1288 URL: https://issues.apache.org/jira/browse/AIRFLOW-1288 Project: Apache Airflow Issue Type: Bug Components: webserver Reporter: Dan Davydov
DAGs that have owners set to a bad value break the front page of the webserver with an error like below. Instead these should just cause import errors for the specific dags in question. {{code}} Ooops. ____/ ( ( ) ) \___ /( ( ( ) _ )) ) )\ (( ( )( ) ) ( ) ) ((/ ( _( ) ( _) ) ( () ) ) ( ( ( (_) (( ( ) .((_ ) . )_ ( ( ) ( ( ) ) ) . ) ( ) ( ( ( ( ) ( _ ( _) ). ) . ) ) ( ) ( ( ( ) ( ) ( )) ) _)( ) ) ) ( ( ( \ ) ( (_ ( ) ( ) ) ) ) )) ( ) ( ( ( ( (_ ( ) ( _ ) ) ( ) ) ) ( ( ( ( ( ) (_ ) ) ) _) ) _( ( ) (( ( )( ( _ ) _) _(_ ( (_ ) (_((__(_(__(( ( ( | ) ) ) )_))__))_)___) ((__) \\||lll|l||/// \_)) ( /(/ ( ) ) )\ ) ( ( ( ( | | ) ) )\ ) ( /(| / ( )) ) ) )) ) ( ( ((((_(|)_))))) ) ( ||\(|(|)|/|| ) ( |(||(||)|||| ) ( //|/l|||)|\\ \ ) (/ / // /|//||||\\ \ \ \ _) ------------------------------------------------------------------------------- Node: i-0dbbddfb63fb2cfbc.inst.aws.airbnb.com ------------------------------------------------------------------------------- Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1817, in wsgi_app response = self.full_dispatch_request() File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1477, in full_dispatch_request rv = self.handle_user_exception(e) File "/usr/local/lib/python2.7/dist-packages/newrelic/hooks/framework_flask.py", line 103, in _nr_wrapper_Flask_handle_exception_ return wrapped(*args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1381, in handle_user_exception reraise(exc_type, exc_value, tb) File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1475, in full_dispatch_request rv = self.dispatch_request() File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1461, in dispatch_request return self.view_functions[rule.endpoint](**req.view_args) File "/usr/local/lib/python2.7/dist-packages/newrelic/hooks/framework_flask.py", line 40, in _nr_wrapper_handler_ return wrapped(*args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/flask_admin/base.py", line 68, in inner return self._run_view(f, *args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/flask_admin/base.py", line 367, in _run_view return fn(self, *args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/flask_login.py", line 758, in decorated_view return func(*args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/airflow/www/views.py", line 1909, in index all_dag_ids=all_dag_ids) File "/usr/local/lib/python2.7/dist-packages/flask_admin/base.py", line 307, in render return render_template(template, **kwargs) File "/usr/local/lib/python2.7/dist-packages/newrelic/api/function_trace.py", line 110, in literal_wrapper return wrapped(*args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/flask/templating.py", line 128, in render_template context, ctx.app) File "/usr/local/lib/python2.7/dist-packages/flask/templating.py", line 110, in _render rv = template.render(context) File "/usr/local/lib/python2.7/dist-packages/newrelic/api/function_trace.py", line 98, in dynamic_wrapper return wrapped(*args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/jinja2/environment.py", line 989, in render return self.environment.handle_exception(exc_info, True) File "/usr/local/lib/python2.7/dist-packages/jinja2/environment.py", line 754, in handle_exception reraise(exc_type, exc_value, tb) File "/usr/local/lib/python2.7/dist-packages/airflow/www/templates/airflow/dags.html", line 18, in top-level template code {% extends "airflow/master.html" %} File "/usr/local/lib/python2.7/dist-packages/airflow/www/templates/airflow/master.html", line 18, in top-level template code {% extends "admin/master.html" %} File "/usr/local/lib/python2.7/dist-packages/airflow/www/templates/admin/master.html", line 18, in top-level template code {% extends 'admin/base.html' %} File "/usr/local/lib/python2.7/dist-packages/flask_admin/templates/bootstrap3/admin/base.html", line 30, in top-level template code {% block page_body %} File "/usr/local/lib/python2.7/dist-packages/airflow/www/templates/admin/master.html", line 104, in block "page_body" {% block body %} File "/usr/local/lib/python2.7/dist-packages/airflow/www/templates/airflow/dags.html", line 99, in block "body" {{ dag.owner if dag else orm_dags[dag_id].owners }} File "/usr/local/lib/python2.7/dist-packages/jinja2/environment.py", line 408, in getattr return getattr(obj, attribute) File "/usr/local/lib/python2.7/dist-packages/airflow/models.py", line 2876, in owner return ", ".join(list(set([t.owner for t in self.tasks]))) TypeError: unhashable type: 'list' {{code}} -- This message was sent by Atlassian JIRA (v6.3.15#6346)