Univention Bugzilla – Bug 51671
OperationalError: (psycopg2.OperationalError) FATAL: Passwort-Authentifizierung für Benutzer »admindiary« fehlgeschlagen
Last modified: 2020-10-14 12:20:38 CEST
I see 67 traceback in our Jenkins tests: Traceback (most recent call last): File "/usr/share/univention-admin-diary/admindiary_backend_wrapper.py", line 131, in <module> stdin_to_storage() File "/usr/share/univention-admin-diary/admindiary_backend_wrapper.py", line 125, in stdin_to_storage process(values) File "/usr/share/univention-admin-diary/admindiary_backend_wrapper.py", line 96, in process add_entry_v1(entry) File "/usr/share/univention-admin-diary/admindiary_backend_wrapper.py", line 107, in add_entry_v1 client.add(entry) File "/usr/lib/python2.7/dist-packages/univention/admindiary/backend.py", line 233, in add event = self.add_event(diary_entry.event_name) File "/usr/lib/python2.7/dist-packages/univention/admindiary/backend.py", line 204, in add_event obj = self._session.query(Event).filter(Event.name == name).one_or_none() File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 3008, in one_or_none ret = list(self) File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 3081, in __iter__ return self._execute_and_instances(context) File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 3103, in _execute_and_instances querycontext, self._connection_from_session, close_with_result=True File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 3111, in _get_bind_args mapper=self._bind_mapper(), clause=querycontext.statement, **kw File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 3096, in _connection_from_session conn = self.session.connection(**kw) File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1120, in connection execution_options=execution_options, File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1126, in _connection_for_bind engine, execution_options File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 424, in _connection_for_bind conn = bind.contextual_connect() File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 2192, in contextual_connect self._wrap_pool_connect(self.pool.connect, None), File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 2232, in _wrap_pool_connect e, dialect, self File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1528, in _handle_dbapi_exception_noconnection util.raise_from_cause(sqlalchemy_exception, exc_info) File "/usr/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 296, in raise_from_cause reraise(type(exception), exception, tb=exc_tb, cause=cause) File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 2228, in _wrap_pool_connect return fn() File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 425, in connect return _ConnectionFairy._checkout(self) File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 822, in _checkout fairy = _ConnectionRecord.checkout(pool) File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 554, in checkout rec = pool._do_get() File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 1250, in _do_get self._dec_overflow() File "/usr/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 67, in __exit__ compat.reraise(exc_type, exc_value, exc_tb) File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 1247, in _do_get return self._create_connection() File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 370, in _create_connection return _ConnectionRecord(self) File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 499, in __init__ self.__connect(first_connect_check=True) File "/usr/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 701, in __connect connection = pool._invoke_creator(self) File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/strategies.py", line 114, in connect return dialect.connect(*cargs, **cparams) File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 437, in connect return self.dbapi.connect(*cargs, **cparams) File "/usr/lib/python2.7/dist-packages/psycopg2/__init__.py", line 130, in connect conn = _connect(dsn, connection_factory=connection_factory, **kwasync) OperationalError: (psycopg2.OperationalError) FATAL: Passwort-Authentifizierung für Benutzer »admindiary« fehlgeschlagen I think the joinscript should fail if the user could not be created: diff --git services/univention-admin-diary/create-database services/univention-admin-diary/create-database index 936fc87ade..51e4984a9a 100755 --- services/univention-admin-diary/create-database +++ services/univention-admin-diary/create-database @@ -27,6 +27,8 @@ # /usr/share/common-licenses/AGPL-3; if not, see # <https://www.gnu.org/licenses/>. +set -e + db_backend="$(ucr get admin/diary/dbms)" PASSWORD="$(cat /etc/admin-diary.secret)" See also Bug #48476 comment 1.
git:fbest/51671-wrap-sqlalchemy-error Add some error handling for the exception, because this spams the logfiles of Jenkins runs every day. diff --git services/univention-admin-diary/admindiary_backend_wrapper.py services/univention-admin-diary/admindiary_backend_wrapper.py index 4c84de4d5e..8e66ba4e86 100755 --- services/univention-admin-diary/admindiary_backend_wrapper.py +++ services/univention-admin-diary/admindiary_backend_wrapper.py @@ -38,6 +38,7 @@ import sys from datetime import datetime from functools import partial import json +import sqlalchemy.exc from pyparsing import Word, alphas, Suppress, Combine, nums, string, Regex, ParseException @@ -129,6 +130,8 @@ def stdin_to_storage(): if __name__ == "__main__": try: stdin_to_storage() + except sqlalchemy.exc.OperationalError as exc: + get_logger().error('Processing entry failed: %s', exc) except Exception as exc: get_logger().error('Processing entry failed!') get_logger().exception(exc)