Vitor Baptista created AIRFLOW-1088:
---------------------------------------

             Summary: DagBag's import_errors() contain quoted string messages
                 Key: AIRFLOW-1088
                 URL: https://issues.apache.org/jira/browse/AIRFLOW-1088
             Project: Apache Airflow
          Issue Type: Bug
    Affects Versions: 1.8.0
         Environment: Python 2.7, 3.5, 3.6
            Reporter: Vitor Baptista
             Fix For: Airflow 1.7.1.3


For example, consider that we're loading a DAG folder that has a DAG requiring 
Variable {{FOO}} that doesn't exist, as follows:

{code}
dagbag = airflow.models.DagBag(dag_folder=dag_folder, include_examples=False)
dagbag.import_errors.values()
# ["u'Variable FOO does not exist"]
{code}

Notice that the error message from {{dagbag.import_errors.values()}} contain is 
inside {{u'...'}}. The problem appears to be that we're converting the 
{{KeyError}} messages using {{str(exception)}} (see lines 272 and 305 on 
https://github.com/apache/incubator-airflow/blob/53ca5084561fd5c13996609f2eda6baf717249b5/airflow/models.py).

We can reproduce a similar error using:
{code}
message = 'error message'
error = KeyError(message)
assert message == str(error), '"{}" != "{}"'.format(message, str(error))
# Traceback (most recent call last):
#   File "<stdin>", line 1, in <module>
# AssertionError: "error message" != "'error message'"
{code}

I tested it on Python 2.7, 3.5 and 3.6 and got the same error, so my guess is 
that it affects Python 2.7+.

This problem doesn't occur with Airflow 1.7.1.3, although we use the same 
{{str(exception)}}, so my guess is that there's something different in how we 
throw the exception.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to