We are using airflow with SQLAlchemy==1.1.1 without any problems.
On Wed, Oct 19, 2016 at 2:07 AM harish singh <[email protected]>
wrote:
> Hi everyone,
>
> We have been using airflow for roughly about 7 months. Pretty smooth :)
> Thanks!
>
> Today when I build my airflow container, I found a weird issue.
>
> This is install command for airflow.
>
> ENV AIRFLOW_VERSION 1.7.0RUN sudo pip install airflow==${AIRFLOW_VERSION}
>
>
> Now the problem happens with 'sqlalchemy '.
> While installing airflow, I saw this in the logs.
>
> *Collecting sqlalchemy>=0.9.8 (from airflow==1.7.0)*
> * Downloading SQLAlchemy-1.1.2.tar.gz (5.1MB)*
>
> When I start the scheduler, I see a lot of errors (below stack trace).
> This is happening when I am creating pools (programmatically).
>
> I think we are hitting this issue:
> http://docs.sqlalchemy.org/en/latest/changelog/migration_11.html
> (sqlalchemy has a new release on Oct 17th)
>
> I am not sure if this is a bug.
> Looking at airflow/setup.py,
> I find install_requires has "'sqlalchemy>=0.9.8'"
>
> Shouldn't this be "'sqlalchemy>=0.9.8, <=1.1'" ?
>
> If not, has somebody faced a similar issue? Any pointers?
>
> *Stack trace: *
> When I started the scheduler process, this is the error I got:
>
> [2016-10-19 07:21:56,073] {jobs.py:642} ERROR - Object blah_pool is not
> legal as a SQL literal value
> Traceback (most recent call last):
> File "/usr/local/lib/python2.7/dist-packages/airflow/jobs.py", line 639,
> in _execute
> self.process_dag(dag, executor)
> File "/usr/local/lib/python2.7/dist-packages/airflow/jobs.py", line 488,
> in process_dag
> elif ti.is_runnable(flag_upstream_failed=True):
> File "/usr/local/lib/python2.7/dist-packages/airflow/models.py", line
> 770, in is_runnable
> return self.is_queueable(flag_upstream_failed) and not self.pool_full()
> File "/usr/local/lib/python2.7/dist-packages/airflow/utils.py", line 142,
> in wrapper
> result = func(*args, **kwargs)
> File "/usr/local/lib/python2.7/dist-packages/airflow/models.py", line
> 939, in pool_full
> .filter(Pool.pool == self.task.pool)
> File
> "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/operators.py", line
> 304, in __eq__
> return self.operate(eq, other)
> File
> "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/attributes.py", line
> 175, in operate
> return op(self.comparator, *other, **kwargs)
> File
> "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/operators.py", line
> 304, in __eq__
> return self.operate(eq, other)
> File
> "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/properties.py", line
> 270, in operate
> return op(self.__clause_element__(), *other, **kwargs)
> File
> "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/annotation.py", line
> 95, in __eq__
> return self.__element.__class__.__eq__(self, other)
> File
> "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/operators.py", line
> 304, in __eq__
> return self.operate(eq, other)
> File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/elements.py",
> line 686, in operate
> return op(self.comparator, *other, **kwargs)
> File
> "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/operators.py", line
> 304, in __eq__
> return self.operate(eq, other)
> File "<string>", line 1, in <lambda>
> File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/type_api.py",
> line 63, in operate
> return o[0](self.expr, op, *(other + o[1:]), **kwargs)
> File
>
> "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/default_comparator.py",
> line 64, in _boolean_compare
> obj = _check_literal(expr, op, obj)
> File
>
> "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/default_comparator.py",
> line 305, in _check_literal
> return expr._bind_param(operator, other, type_=bindparam_type)
> File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/elements.py",
> line 3823, in _bind_param
> unique=True)
> File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/elements.py",
> line 1094, in __init__
> _compared_to_operator, value)
> File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/type_api.py",
> line 516, in coerce_compared_value
> _coerced_type = _resolve_value_to_type(value)
> File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/sqltypes.py",
> line 2467, in _resolve_value_to_type
> "Object %r is not legal as a SQL literal value" % value)
> ArgumentError: Object monitor_pool is not legal as a SQL literal value
>