Page MenuHomePhabricator

WatchTranslations tool doesn't work after logged in
Closed, ResolvedPublic

Description

Steps to reproduce

  1. Go to https.//tools.wmflabs.org/watch-translations (tool should ask for login)
  2. Login
  3. 502 Bad Gateway displayed

Traceback

[pid: 10|app: 0|req: 3/15] 192.168.207.0 () {46 vars in 948 bytes} [Wed Nov 13 09:20:32 2019] GET /watch-translations/ => generated 1245 bytes in 24 msecs (HTTP/1.1 200) 2 headers in 81 bytes (1 switches on core 0)
Traceback (most recent call last):
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/MySQLdb/cursors.py", line 204, in execute
    query = query % args
TypeError: unsupported operand type(s) for %: 'bytes' and 'tuple'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/engine/base.py", line 1246, in _execute_context
    cursor, statement, parameters, context
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/engine/default.py", line 581, in do_execute
    cursor.execute(statement, parameters)
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/MySQLdb/cursors.py", line 206, in execute
    raise ProgrammingError(str(m))
MySQLdb._exceptions.ProgrammingError: unsupported operand type(s) for %: 'bytes' and 'tuple'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/flask/app.py", line 2463, in __call__
    return self.wsgi_app(environ, start_response)
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/flask/app.py", line 2449, in wsgi_app
    response = self.handle_exception(e)
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/flask/app.py", line 1866, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/flask/app.py", line 2446, in wsgi_app
    response = self.full_dispatch_request()
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/flask/app.py", line 1951, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/flask/app.py", line 1820, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/flask/app.py", line 1947, in full_dispatch_request
    rv = self.preprocess_request()
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/flask/app.py", line 2241, in preprocess_request
    rv = func()
  File "/data/project/watch-translations/www/python/src/app.py", line 101, in db_init_user
    user = get_user()
  File "/data/project/watch-translations/www/python/src/app.py", line 84, in get_user
    ).first()
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/orm/query.py", line 3265, in first
    ret = list(self[0:1])
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/orm/query.py", line 3043, in __getitem__
    return list(res)
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/orm/query.py", line 3367, in __iter__
    return self._execute_and_instances(context)
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/orm/query.py", line 3389, in _execute_and_instances
    querycontext, self._connection_from_session, close_with_result=True
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/orm/query.py", line 3404, in _get_bind_args
    mapper=self._bind_mapper(), clause=querycontext.statement, **kw
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/orm/query.py", line 3382, in _connection_from_session
    conn = self.session.connection(**kw)
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/orm/session.py", line 1124, in connection
    execution_options=execution_options,
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/orm/session.py", line 1130, in _connection_for_bind
    engine, execution_options
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/orm/session.py", line 431, in _connection_for_bind
    conn = bind._contextual_connect()
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/engine/base.py", line 2242, in _contextual_connect
    self._wrap_pool_connect(self.pool.connect, None),
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/engine/base.py", line 2276, in _wrap_pool_connect
    return fn()
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/pool/base.py", line 363, in connect
    return _ConnectionFairy._checkout(self)
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/pool/base.py", line 760, in _checkout
    fairy = _ConnectionRecord.checkout(pool)
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/pool/base.py", line 492, in checkout
    rec = pool._do_get()
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/pool/impl.py", line 139, in _do_get
    self._dec_overflow()
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/util/langhelpers.py", line 68, in __exit__
    compat.reraise(exc_type, exc_value, exc_tb)
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/util/compat.py", line 153, in reraise
    raise value
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/pool/impl.py", line 136, in _do_get
    return self._create_connection()
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/pool/base.py", line 308, in _create_connection
    return _ConnectionRecord(self)
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/pool/base.py", line 437, in __init__
    self.__connect(first_connect_check=True)
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/pool/base.py", line 649, in __connect
    ).exec_once_unless_exception(self.connection, self)
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/event/attr.py", line 314, in exec_once_unless_exception
    self._exec_once_impl(True, *args, **kw)
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/event/attr.py", line 285, in _exec_once_impl
    self(*args, **kw)
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/event/attr.py", line 322, in __call__
    fn(*args, **kw)
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/util/langhelpers.py", line 1485, in go
    return once_fn(*arg, **kw)
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/engine/strategies.py", line 199, in first_connect
    dialect.initialize(c)
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/dialects/mysql/base.py", line 2424, in initialize
    self._detect_sql_mode(connection)
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/dialects/mysql/base.py", line 2881, in _detect_sql_mode
    connection.execute("SHOW VARIABLES LIKE 'sql_mode'"),
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/engine/base.py", line 976, in execute
    return self._execute_text(object_, multiparams, params)
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/engine/base.py", line 1149, in _execute_text
    parameters,
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/engine/base.py", line 1250, in _execute_context
    e, statement, parameters, cursor, context
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/engine/base.py", line 1476, in _handle_dbapi_exception
    util.raise_from_cause(sqlalchemy_exception, exc_info)
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/util/compat.py", line 398, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb, cause=cause)
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/util/compat.py", line 152, in reraise
    raise value.with_traceback(tb)
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/engine/base.py", line 1246, in _execute_context
    cursor, statement, parameters, context
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/sqlalchemy/engine/default.py", line 581, in do_execute
    cursor.execute(statement, parameters)
  File "/data/project/watch-translations/www/python/venv/lib/python3.4/site-packages/MySQLdb/cursors.py", line 206, in execute
    raise ProgrammingError(str(m))
sqlalchemy.exc.ProgrammingError: (MySQLdb._exceptions.ProgrammingError) unsupported operand type(s) for %: 'bytes' and 'tuple'
[SQL: SHOW VARIABLES LIKE 'sql_mode']
(Background on this error at: http://sqlalche.me/e/f405)

Event Timeline

aborrero triaged this task as Medium priority.
aborrero added subscribers: Phamhi, aborrero.

@Phamhi this tool is running in the kubernetes backend. Were python docker images updated recently? Could this be related to the recent update?

ftr, I've tried to delete and re-initialize (with python3 -m venv venv inside kubernetes shell) the virtual environment.

Please use python3.5 as MySQLdb doesn't support python3.4 (python defaults to python3.4 if not specified) https://github.com/PyMySQL/mysqlclient-python/issues/342

webservice --backend=kubernetes python3.5 start/stop/restart

It should be up now.