You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by "Dan Davydov (JIRA)" <ji...@apache.org> on 2017/06/07 18:42:18 UTC

[jira] [Updated] (AIRFLOW-1288) Bad owners field in DAGs breaks Airflow front page

     [ https://issues.apache.org/jira/browse/AIRFLOW-1288?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dan Davydov updated AIRFLOW-1288:
---------------------------------
    Description: 
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}

  was:
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}}


> 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)