airflow-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dan Davydov (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (AIRFLOW-940) Failing to unencrypt one variable shouldn't break the admin/variable page
Date Fri, 03 Mar 2017 22:51:45 GMT

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

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

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


> 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
>
> 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.3.15#6346)

Mime
View raw message