buildbot
buildbot copied to clipboard
Database exception on push events from gitlab
I have a 4.2.1 system set up, and build starts via ForceSchedulers work fine, but those based on push events from GitLab are seeing this:
buildbot-1 | 2025-03-21 17:20:06+0000 [-] while processing change
buildbot-1 | Traceback (most recent call last):
buildbot-1 | File "/buildbot_venv/lib/python3.9/site-packages/twisted/python/threadpool.py", line 269, in inContext
buildbot-1 | result = inContext.theWork() # type: ignore[attr-defined]
buildbot-1 | File "/buildbot_venv/lib/python3.9/site-packages/twisted/python/threadpool.py", line 285, in <lambda>
buildbot-1 | inContext.theWork = lambda: context.call( # type: ignore[attr-defined]
buildbot-1 | File "/buildbot_venv/lib/python3.9/site-packages/twisted/python/context.py", line 117, in callWithContext
buildbot-1 | return self.currentContext().callWithContext(ctx, func, *args, **kw)
buildbot-1 | File "/buildbot_venv/lib/python3.9/site-packages/twisted/python/context.py", line 82, in callWithContext
buildbot-1 | return func(*args, **kw)
buildbot-1 | File "/buildbot_venv/lib/python3.9/site-packages/buildbot/db/pool.py", line 214, in __thd
buildbot-1 | rv = callable(arg, *args, **kwargs)
buildbot-1 | File "/buildbot_venv/lib/python3.9/site-packages/buildbot/db/schedulers.py", line 82, in thd
buildbot-1 | self.db.upsert(
buildbot-1 | File "/buildbot_venv/lib/python3.9/site-packages/buildbot/util/sautils.py", line 156, in _upsert_postgresql
buildbot-1 | _upsert_on_conflict_do_update(
buildbot-1 | File "/buildbot_venv/lib/python3.9/site-packages/buildbot/util/sautils.py", line 187, in _upsert_on_conflict_do_update
buildbot-1 | connection.execute(do_update_stmt)
buildbot-1 | File "/buildbot_venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1416, in execute
buildbot-1 | return meth(
buildbot-1 | File "/buildbot_venv/lib/python3.9/site-packages/sqlalchemy/sql/elements.py", line 515, in _execute_on_connection
buildbot-1 | return connection._execute_clauseelement(
buildbot-1 | File "/buildbot_venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1638, in _execute_clauseelement
buildbot-1 | ret = self._execute_context(
buildbot-1 | File "/buildbot_venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1843, in _execute_context
buildbot-1 | return self._exec_single_context(
buildbot-1 | File "/buildbot_venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1983, in _exec_single_context
buildbot-1 | self._handle_dbapi_exception(
buildbot-1 | File "/buildbot_venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2352, in _handle_dbapi_exception
buildbot-1 | raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
buildbot-1 | File "/buildbot_venv/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1964, in _exec_single_context
buildbot-1 | self.dialect.do_execute(
buildbot-1 | File "/buildbot_venv/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 942, in do_execute
buildbot-1 | cursor.execute(statement, parameters)
buildbot-1 | sqlalchemy.exc.ProgrammingError: (psycopg2.errors.SyntaxError) syntax error at or near "ON"
buildbot-1 | LINE 1: ...hedulerid, changeid, important) VALUES (59, 2, 0) ON CONFLIC...
buildbot-1 | ^
buildbot-1 |
buildbot-1 | [SQL: INSERT INTO scheduler_changes (schedulerid, changeid, important) VALUES (%(schedulerid)s, %(changeid)s, %(important)s) ON CONFLICT (schedulerid, changeid) WHERE schedulerid = %(schedulerid_1)s AND changeid = %(changeid_1)s DO UPDATE SET important = %(param_1)s]
buildbot-1 | [parameters: {'schedulerid': 59, 'changeid': 2, 'important': 0, 'schedulerid_1': 59, 'changeid_1': 2, 'param_1': 0}]
buildbot-1 | (Background on this error at: https://sqlalche.me/e/20/f405)
Any idea what's up there, or where to start debugging?
@gregorydlogan I think you're using too old version of Postgres. Buildbot requires at least version 10.
Well, that'll do it. Upgraded and this has gone away. TY @p12tic.