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

Edgar Rodriguez reassigned AIRFLOW-940:
---------------------------------------

    Assignee: Edgar Rodriguez

> Failing to unencrypt one variable shouldn't break the admin/variable page
> -------------------------------------------------------------------------
>
>                 Key: AIRFLOW-940
>                 URL: https://issues.apache.org/jira/browse/AIRFLOW-940
>             Project: Apache Airflow
>          Issue Type: Bug
>          Components: webserver
>            Reporter: Dan Davydov
>            Assignee: Edgar Rodriguez
>              Labels: beginner, starter
>
> At the moment failing to decrypt one of the airflow variables in the database 
> using the fernet key will cause the admin/variable page to crash. Instead 
> there should be an error message for only the broken variables at the top of 
> the page, and the other ones should still be loaded and displayed.
> This is what the trace on admin/variable currently looks like:
> {code}
> 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/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/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_admin/model/base.py", 
> line 1814, in index_view
>     return_url=self._get_list_url(view_args),
>   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/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/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/variable_list.html",
>  line 18, in top-level template code
>     {% extends 'admin/model/list.html' %}
>   File 
> "/usr/local/lib/python2.7/dist-packages/flask_admin/templates/bootstrap3/admin/model/list.html",
>  line 5, in top-level template code
>     {% import 'admin/actions.html' as actionlib with context %}
>   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 96, in block "page_body"
>     {% block body %}
>   File 
> "/usr/local/lib/python2.7/dist-packages/flask_admin/templates/bootstrap3/admin/model/list.html",
>  line 62, in block "body"
>     {% block model_list_table %}
>   File 
> "/usr/local/lib/python2.7/dist-packages/flask_admin/templates/bootstrap3/admin/model/list.html",
>  line 110, in block "model_list_table"
>     {% block list_row scoped %}
>   File 
> "/usr/local/lib/python2.7/dist-packages/flask_admin/templates/bootstrap3/admin/model/list.html",
>  line 165, in block "list_row"
>     {{ get_value(row, c) }}
>   File "/usr/local/lib/python2.7/dist-packages/flask_admin/model/base.py", 
> line 1666, in get_list_value
>     self.column_type_formatters,
>   File "/usr/local/lib/python2.7/dist-packages/flask_admin/model/base.py", 
> line 1631, in _get_list_value
>     value = column_fmt(self, context, model, name)
>   File "/usr/local/lib/python2.7/dist-packages/airflow/www/views.py", line 
> 2146, in hidden_field_formatter
>     return getattr(model, name)
>   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/attributes.py", 
> line 293, in __get__
>     return self.descriptor.__get__(instance, owner)
>   File "/usr/local/lib/python2.7/dist-packages/airflow/models.py", line 3487, 
> in get_val
>     return FERNET.decrypt(bytes(self._val, 'utf-8')).decode()
>   File "/usr/local/lib/python2.7/dist-packages/cryptography/fernet.py", line 
> 82, in decrypt
>     raise InvalidToken
> InvalidToken
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to