apache / airflow

Apache Airflow - A platform to programmatically author, schedule, and monitor workflows
https://airflow.apache.org/
Apache License 2.0
36.61k stars 14.18k forks source link

XCom Search filter on value errors #42720

Open fritz-astronomer opened 5 days ago

fritz-astronomer commented 5 days ago

Apache Airflow version

Other Airflow 2 version (please specify below)

If "Other Airflow 2 version" selected, which one?

2.9.3

What happened?

An error occurs in AF2.9 when attempting to filter XCom by value

What you think should happen instead?

No response

How to reproduce

  1. Go to Admin > XCom
  2. Add a filter for 'value', put in any string
  3. Hit search

Stack trace included:

[03/Oct/2024:18:11:34 +0000] "GET /dus78e67/xcom/list/?_flt_2_value=CQQG28MH9 HTTP/1.1" 500 1595 "https://clkvh3b46003m01kbalgwwdcy.astronomer.run/dus78e67/xcom/list/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36"
TypeError: can't escape str to binary
    cursor.execute(statement, parameters)
  File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute
    self.dialect.do_execute(
  File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context
    raise exception
  File "/usr/local/lib/python3.11/site-packages/sqlalchemy/util/compat.py", line 211, in raise_
    util.raise_(exc_info[1], with_traceback=exc_info[2])
  File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 2138, in _handle_dbapi_exception
    self._handle_dbapi_exception(
  File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1953, in _execute_context
          ^^^^^^^^^^^^^^^^^^^^^^
    ret = self._execute_context(
  File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1577, in _execute_clauseelement
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    return connection._execute_clauseelement(
  File "/usr/local/lib/python3.11/site-packages/sqlalchemy/sql/elements.py", line 334, in _execute_on_connection
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    return meth(self, args_10style, kwargs_10style, execution_options)
  File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1710, in _execute_20
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    result = conn._execute_20(statement, params or {}, execution_options)
  File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 1717, in execute
             ^^^^^^^^^^^^^^^^^^^^^
    result = self.session.execute(
  File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/query.py", line 2916, in _iter
           ^^^^^^^^^^^^
    return self._iter().one()
  File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/query.py", line 2870, in one
          ^^^^^^^^^^
    ret = self.one()
  File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/query.py", line 2893, in scalar
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    return self._from_self(col).enable_eagerloads(False).scalar()
  File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/query.py", line 3176, in count
      ^^^^^^^
    ).count()
  File "/usr/local/lib/python3.11/site-packages/flask_appbuilder/models/sqla/interface.py", line 398, in query_count
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    count = self.query_count(query, filters, select_columns)
  File "/usr/local/lib/python3.11/site-packages/flask_appbuilder/models/sqla/interface.py", line 489, in query
                 ^^^^^^^^^^^^^^^^^^^^^
    count, lst = self.datamodel.query(
  File "/usr/local/lib/python3.11/site-packages/flask_appbuilder/baseviews.py", line 1078, in _get_list_widget
              ^^^^^^^^^^^^^^^^^^^^^^
    widgets = self._get_list_widget(
  File "/usr/local/lib/python3.11/site-packages/flask_appbuilder/baseviews.py", line 1179, in _list
              ^^^^^^^^^^^^
    widgets = self._list()
  File "/usr/local/lib/python3.11/site-packages/flask_appbuilder/views.py", line 550, in list
           ^^^^^^^^^^^^^^^^^^^^^^^^
    return f(self, *args, **kwargs)
  File "/usr/local/lib/python3.11/site-packages/flask_appbuilder/security/decorators.py", line 137, in wraps
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
  File "/usr/local/lib/python3.11/site-packages/flask/app.py", line 1799, in dispatch_request
         ^^^^^^^^^^^^^^^^^^^^^^^
    rv = self.dispatch_request()
  File "/usr/local/lib/python3.11/site-packages/flask/app.py", line 1823, in full_dispatch_request
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    rv = self.handle_user_exception(e)
  File "/usr/local/lib/python3.11/site-packages/flask/app.py", line 1825, in full_dispatch_request
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    response = self.full_dispatch_request()
  File "/usr/local/lib/python3.11/site-packages/flask/app.py", line 2529, in wsgi_app
Traceback (most recent call last):
{app.py:1744} ERROR - Exception on /xcom/list/ [GET]

Operating System

Astro

Versions of Apache Airflow Providers

No response

Deployment

Astronomer

Deployment details

No response

Anything else?

No response

Are you willing to submit PR?

Code of Conduct

josix commented 5 days ago

I can investigate the root cause first, feel free to assign it to me.