Re: pgbouncer | Update PgBouncer to 1.26.0 (!4)

From: Christoph Berg <myon(at)debian(dot)org>
To: Bradford Boyle <bradford(dot)d(dot)boyle(at)gmail(dot)com>
Cc: pgsql-pkg-debian(at)lists(dot)postgresql(dot)org, cosgroveb(at)gmail(dot)com
Subject: Re: pgbouncer | Update PgBouncer to 1.26.0 (!4)
Date: 2026-09-28 09:24:02
Message-ID: aroyMgZwq36jC4cj@msg.df7cb.de
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-pkg-debian

Re: Bradford Boyle
> I try disabling the parallel execution of tests by setting CONCURRENCY=1
> in override_dh_auto_test. I've verified that this works locally but
> since I don't have a local reproduction, I'm not 100% certain this will
> fix the test failures. I also don't have a good sense for what the
> impact on build times would be. I also looked at modifying the Jenkins
> job to limit the number of conccurrent builds but the only option I
> found was to configure the matrix build to be serial.

Hi Bradford,

thanks for looking into this. I was playing with using more cores for
build jobs a few weeks ago, and one result of that is that build jobs
are now run with parallel=2 (with the option to use all cores and run
sequentially, but that doesn't play nicely long if there are several
packages in the queue). So this was a candidate, but I've now set
"node-usage: serial" on the pgbouncer-binaries job and it already
failed on sid/amd64, i.e. while nothing else was running yet.

I then tried CONCURRENCY=1 locally here and got:

debian/rules override_dh_auto_test
make[1]: Verzeichnis „/home/myon/projects/postgresql/pgbouncer/pgbouncer“ wird betreten
LANG=C.UTF-8 /usr/bin/make check PATH=/usr/lib/postgresql/18/bin:/home/myon/.local/bin:/home/myon/bin:/usr/lib/ccache:/usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin:/usr/games:/home/myon/log/bin CONCURRENCY=1
make[2]: Entering directory '/home/myon/projects/postgresql/pgbouncer/pgbouncer'
etc/optscan.sh
if [ 1 = 1 ]; then \
PYTHONIOENCODING=utf8 /usr/bin/pytest -r s; \
else \
PYTHONIOENCODING=utf8 /usr/bin/pytest -n 1 -r s; \
fi
==================================================================== test session starts ====================================================================
platform linux -- Python 3.14.7, pytest-9.1.1, pluggy-1.6.0
rootdir: /home/myon/projects/postgresql/pgbouncer/pgbouncer
configfile: pyproject.toml
plugins: xdist-3.8.0, timeout-2.4.0, asyncio-1.4.0
timeout: 30.0s
timeout method: signal
timeout func_only: False
asyncio: mode=Mode.AUTO, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
collected 293 items

test/test_admin.py ................... [ 6%]
test/test_auth.py ....................................E.. [ 19%]
test/test_cancel.py .... [ 21%]
test/test_copy.py .............. [ 25%]
test/test_limits.py .................................................... [ 43%]
test/test_load_balance_hosts.py ... [ 44%]
test/test_misc.py ..................s................... [ 57%]
test/test_no_database.py ......... [ 60%]
test/test_no_user.py .......... [ 64%]
test/test_operations.py ..... [ 65%]
test/test_peering.py .... [ 67%]
test/test_prepared.py ..........................s. [ 76%]
test/test_replication.py ............ [ 80%]
test/test_ssl.py FFFFFFFFFFFFFFF....F.. [ 88%]
test/test_ssl_eof.py . [ 88%]
test/test_ssl_pending.py F [ 89%]
test/test_timeouts.py ...........................ssss. [100%]

========================================================================== ERRORS ===========================================================================
_____________________________________________________________ ERROR at setup of test_ldap_auth ______________________________________________________________
/usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:944: in pytest_fixture_setup
hook_result = yield
^^^^^
asyncio_mode = <Mode.AUTO: 'auto'>
c = <_pytest.monkeypatch.MonkeyPatch object at 0x703c9278a970>
default_loop_scope = None
fixturedef = <FixtureDef argname='bouncer_with_openldap' scope='function' baseid='test'>
loop_scope = 'function'
request = <SubRequest 'bouncer_with_openldap' for <Function test_ldap_auth>>
runner = <asyncio.runners.Runner object at 0x703c926eead0>
runner_fixture_id = '_function_scoped_runner'
runner_fixturedef = <FixtureDef argname='_function_scoped_runner' scope='function' baseid=''>
synchronizer = <function bouncer_with_openldap at 0x703c92783060>
/usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:407: in _asyncgen_fixture_wrapper
result = runner.run(setup(), context=context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
args = ()
context = <_contextvars.Context object at 0x703c92495280>
fixture_function = <function bouncer_with_openldap at 0x703c92b48d50>
gen_obj = <async_generator object bouncer_with_openldap at 0x703c92a579a0>
kwargs = {'pg': <test.utils.Postgres object at 0x703c92a0c2f0>, 'tmp_path': PosixPath('/home/myon/tmp/pytest-of-myon/pytest-6/test_ldap_auth0'), 'monkeypatch': <_pytest.monkeypatch.MonkeyPatch object at 0x703c9278b310>}
request = <SubRequest 'bouncer_with_openldap' for <Function test_ldap_auth>>
runner = <asyncio.runners.Runner object at 0x703c926eead0>
setup = <function _wrap_asyncgen_fixture.<locals>._asyncgen_fixture_wrapper.<locals>.setup at 0x703c927831c0>
/usr/lib/python3.14/asyncio/runners.py:128: in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
context = <_contextvars.Context object at 0x703c92495280>
coro = <coroutine object _wrap_asyncgen_fixture.<locals>._asyncgen_fixture_wrapper.<locals>.setup at 0x703c927c6740>
self = <asyncio.runners.Runner object at 0x703c926eead0>
sigint_handler = functools.partial(<bound method Runner._on_sigint of <asyncio.runners.Runner object at 0x703c926eead0>>, main_task=<Ta...gbouncer/pgbouncer/test/start_openldap_server.sh /home/myon/tmp/pytest-of-myon/pytest-6/test_ldap_auth0 10275 10276')>)
task = <Task finished name='Task-615' coro=<_wrap_asyncgen_fixture.<locals>._asyncgen_fixture_wrapper.<locals>.setup() done, ...pgbouncer/pgbouncer/test/start_openldap_server.sh /home/myon/tmp/pytest-of-myon/pytest-6/test_ldap_auth0 10275 10276')>
/usr/lib/python3.14/asyncio/base_events.py:720: in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
future = <Task finished name='Task-615' coro=<_wrap_asyncgen_fixture.<locals>._asyncgen_fixture_wrapper.<locals>.setup() done, ...pgbouncer/pgbouncer/test/start_openldap_server.sh /home/myon/tmp/pytest-of-myon/pytest-6/test_ldap_auth0 10275 10276')>
new_task = False
self = <_UnixSelectorEventLoop running=False closed=False debug=False>
/usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:403: in setup
res = await gen_obj.__anext__()
^^^^^^^^^^^^^^^^^^^^^^^^^
gen_obj = <async_generator object bouncer_with_openldap at 0x703c92a579a0>
/home/myon/projects/postgresql/pgbouncer/pgbouncer/test/conftest.py:213: in bouncer_with_openldap
ldap.startup()
bouncer = <test.utils.Bouncer object at 0x703c9295ba50>
ldap = <test.utils.OpenLDAP object at 0x703c92a0cd70>
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x703c9278b310>
pg = <test.utils.Postgres object at 0x703c92a0c2f0>
tmp_path = PosixPath('/home/myon/tmp/pytest-of-myon/pytest-6/test_ldap_auth0')
/home/myon/projects/postgresql/pgbouncer/pgbouncer/test/utils.py:1305: in startup
run(
self = <test.utils.OpenLDAP object at 0x703c92a0cd70>
/home/myon/projects/postgresql/pgbouncer/pgbouncer/test/utils.py:122: in run
return subprocess.run(command, *args, check=check, shell=shell, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
args = ()
check = True
command = '/home/myon/projects/postgresql/pgbouncer/pgbouncer/test/start_openldap_server.sh /home/myon/tmp/pytest-of-myon/pytest-6/test_ldap_auth0 10275 10276'
kwargs = {}
shell = True
silent = False
/usr/lib/python3.14/subprocess.py:578: in run
raise CalledProcessError(retcode, process.args,
E subprocess.CalledProcessError: Command '/home/myon/projects/postgresql/pgbouncer/pgbouncer/test/start_openldap_server.sh /home/myon/tmp/pytest-of-myon/pytest-6/test_ldap_auth0 10275 10276' returned non-zero exit status 255.
capture_output = False
check = True
input = None
kwargs = {'shell': True}
popenargs = ('/home/myon/projects/postgresql/pgbouncer/pgbouncer/test/start_openldap_server.sh /home/myon/tmp/pytest-of-myon/pytest-6/test_ldap_auth0 10275 10276',)
process = <Popen: returncode: 255 args: '/home/myon/projects/postgresql/pgbouncer/pgbo...>
retcode = 255
stderr = None
stdout = None
timeout = None
------------------------------------------------------------------- Captured stdout setup -------------------------------------------------------------------
server signaled
/usr/sbin/slapd -f /home/myon/tmp/pytest-of-myon/pytest-6/test_ldap_auth0/ldap/slapd.conf -h ldap://localhost:10275 ldaps://localhost:10276
ldapadd -x -w secret -f /home/myon/tmp/pytest-of-myon/pytest-6/test_ldap_auth0/ldap/ldap.ldif -H ldap://localhost:10275
------------------------------------------------------------------- Captured stderr setup -------------------------------------------------------------------
+ pg_ctl -w --pgdata /home/myon/tmp/pytest-of-myon/pytest-6/pgdata reload
+ /home/myon/projects/postgresql/pgbouncer/pgbouncer/test/start_openldap_server.sh /home/myon/tmp/pytest-of-myon/pytest-6/test_ldap_auth0 10275 10276
........+........+.+...+++++++++++++++++++++++++++++++++++++++*.+.......+...+..+.+.....+.+...+..+.+........+.+.........+++++++++++++++++++++++++++++++++++++++*...+....................+.+......+..+............+.........+.+.........+......+.....++++++
.+...+..+.......+++++++++++++++++++++++++++++++++++++++*...+...+...+++++++++++++++++++++++++++++++++++++++*.+.........+....+......+..+.........+.+...+......+...+.....+...+..........+..+......+....+..+....+.....+.+..................+...+..+...+...+.......+...+............+..+...+..............................+.............+.....+......+.+.........+.....+......+...+....+...............+........+.........+....+..+..........+...+............+.........+......+...............+..+.......+...........+...+......+...+.+..+.............+.........+...+.........+...+............+.....+....+.........+...+........+....+........+...+....+..+..........++++++
-----
.....+..........+..+....+..+...+.......+............+......+...........+++++++++++++++++++++++++++++++++++++++*.+.+.....+....+........+...+...+.........+...+...+....+..+...............+.+...+++++++++++++++++++++++++++++++++++++++*...+......+.............+.....+..........+..+...+...+....+...+......+.....+....+..+..........+.....+......+............+.............++++++
..+++++++++++++++++++++++++++++++++++++++*.+............+...+..+.+.................+....+......+++++++++++++++++++++++++++++++++++++++*.....+.+.........+.....................+..+....+......+........+.+......+..+.+.....+....+...+.....+....+...+..+................+...+..+...........................+............+.+...+...........+...+...+...+....+..+.........+......+.+...+.....+......+.+............+.....+.+......+.........+.....+.+......+........+.+.....+...+..........+...+............+..+......+.........+....+.................+.......+......+......+......+...............+..+......+....+...+..+.......+...+..+.........+....+...+............+.....+.+.....+.........+.......+....................+.+..+...............+..........+...........+..........+..+.......+........+......................+...+........+......+.............+..+.+.....+...+.......+........+.........+.+..+............+...+....+...+.....+.+..+............+.......+........+......+.+...+..+.+........+.+..................+..+....+..+....+...+...........+....+...+..+.+..+...................+.....+.+..............+......+....+...+...+.....+.........+..........+...+..+...+.+.........+...+.....+...+.......+........++++++
-----
Certificate request self-signature ok
subject=CN=server
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
========================================================================= FAILURES ==========================================================================
______________________________________________________________________ test_server_ssl ______________________________________________________________________
/home/myon/projects/postgresql/pgbouncer/pgbouncer/test/test_ssl.py:51: in test_server_ssl
bouncer_tls.test()
bouncer_tls = <test.utils.Bouncer object at 0x703c928d3c50>
cert_dir = PosixPath('/home/myon/tmp/pytest-of-myon/pytest-6/certs')
pg = <test.utils.Postgres object at 0x703c92a0c2f0>
root = PosixPath('/home/myon/tmp/pytest-of-myon/pytest-6/certs/TestCA1/ca.crt')
/home/myon/projects/postgresql/pgbouncer/pgbouncer/test/utils.py:513: in test
return self.sql(";", **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^
kwargs = {}
self = <test.utils.Bouncer object at 0x703c928d3c50>
/home/myon/projects/postgresql/pgbouncer/pgbouncer/test/utils.py:406: in sql
with self.cur(**kwargs) as cur:
^^^^^^^^^^^^^^^^^^
kwargs = {}
params = None
query = ';'
self = <test.utils.Bouncer object at 0x703c928d3c50>
/usr/lib/python3.14/contextlib.py:141: in __enter__
return next(self.gen)
^^^^^^^^^^^^^^
self = <contextlib._GeneratorContextManager object at 0x703c91892f90>
/home/myon/projects/postgresql/pgbouncer/pgbouncer/test/utils.py:383: in cur
self.conn(
autocommit = True
kwargs = {}
self = <test.utils.Bouncer object at 0x703c928d3c50>
/home/myon/projects/postgresql/pgbouncer/pgbouncer/test/utils.py:360: in conn
conn = psycopg.connect(
autocommit = True
kwargs = {'dbname': 'p0', 'user': 'postgres', 'host': '127.0.0.1', 'port': 10458, ...}
self = <test.utils.Bouncer object at 0x703c928d3c50>
/usr/lib/python3/dist-packages/psycopg/connection.py:122: in connect
raise last_ex.with_traceback(None)
E psycopg.errors.ConnectionTimeout: connection timeout expired
attempt = {'dbname': 'p0', 'user': 'postgres', 'host': '127.0.0.1', 'port': 10458, ...}
attempts = [{'dbname': 'p0', 'user': 'postgres', 'host': '127.0.0.1', 'port': 10458, ...}]
autocommit = True
cls = <class 'psycopg.Connection'>
conn_errors = [(ConnectionTimeout('connection timeout expired'), "host: '127.0.0.1', port: 10458, hostaddr: '127.0.0.1'")]
conninfo = 'dbname=p0 user=postgres host=127.0.0.1 port=10458 connect_timeout=3 client_encoding=UTF8 hostaddr=127.0.0.1'
context = None
cursor_factory = None
descr = "host: '127.0.0.1', port: 10458, hostaddr: '127.0.0.1'"
gen = <generator object BaseConnection._connect_gen at 0x703c928d2240>
kwargs = {'dbname': 'p0', 'user': 'postgres', 'host': '127.0.0.1', 'port': 10458, ...}
last_ex = ConnectionTimeout('connection timeout expired')
params = {'dbname': 'p0', 'user': 'postgres', 'host': '127.0.0.1', 'port': 10458, ...}
prepare_threshold = 5
row_factory = None
rv = None
tdescr = ('127.0.0.1', 10458, '127.0.0.1')
timeout = 3
------------------------------------------------------------------- Captured stdout setup -------------------------------------------------------------------
server signaled
------------------------------------------------------------------- Captured stderr setup -------------------------------------------------------------------
+ pg_ctl -w --pgdata /home/myon/tmp/pytest-of-myon/pytest-6/pgdata reload
------------------------------------------------------------------- Captured stdout call --------------------------------------------------------------------
server signaled
------------------------------------------------------------------- Captured stderr call --------------------------------------------------------------------
+ pg_ctl -w --pgdata /home/myon/tmp/pytest-of-myon/pytest-6/pgdata reload
----------------------------------------------------------------- Captured stdout teardown ------------------------------------------------------------------

BOUNCER_LOG /home/myon/tmp/pytest-of-myon/pytest-6/test_server_ssl0/bouncer

2026-09-28 08:55:22.841 UTC [2591352] LOG kernel file descriptor limit: 1024 (hard: 524288); max_client_conn: 10, max expected fd use: 149
2026-09-28 08:55:22.841 UTC [2591352] LOG listening on 127.0.0.1:10458
2026-09-28 08:55:22.841 UTC [2591352] LOG listening on unix:/home/myon/tmp/pytest-of-myon/pytest-6/test_server_ssl0/bouncer/.s.PGSQL.10458
2026-09-28 08:55:22.841 UTC [2591352] LOG process up: PgBouncer 1.26.0, libevent 2.1.13-stable (epoll), adns: c-ares 1.34.8, tls: OpenSSL 3.6.4 25 Aug 2026
2026-09-28 08:55:22.937 UTC [2591352] LOG C-0x5debcd73f2b0: (nodb)/pgbouncer(at)unix(2584485):10458 pgbouncer access from unix socket
2026-09-28 08:55:22.937 UTC [2591352] LOG C-0x5debcd73f2b0: pgbouncer/pgbouncer(at)unix(2584485):10458 login attempt: db=pgbouncer user=pgbouncer tls=no replication=no
2026-09-28 08:55:22.937 UTC [2591352] LOG C-0x5debcd73f2b0: pgbouncer/pgbouncer(at)unix(2584485):10458 closing because: client close request (age=0s)
2026-09-28 08:55:22.938 UTC [2591352] LOG C-0x5debcd73f2b0: (nodb)/pgbouncer(at)unix(2584485):10458 pgbouncer access from unix socket
2026-09-28 08:55:22.938 UTC [2591352] LOG C-0x5debcd73f2b0: pgbouncer/pgbouncer(at)unix(2584485):10458 login attempt: db=pgbouncer user=pgbouncer tls=no replication=no
2026-09-28 08:55:22.938 UTC [2591352] LOG C-0x5debcd73f2b0: pgbouncer/pgbouncer(at)unix(2584485):10458 closing because: client close request (age=0s)
2026-09-28 08:55:23.952 UTC [2591352] LOG C-0x5debcd73f2b0: p0/postgres(at)127(dot)0(dot)0(dot)1:34990 login attempt: db=p0 user=postgres tls=no replication=no
2026-09-28 08:55:23.952 UTC [2591352] LOG S-0x5debcd766fe0: p0/bouncer(at)[::1]:10202 closing because: connect failed (age=0s)
2026-09-28 08:55:25.176 UTC [2591352] LOG S-0x5debcd766fe0: p0/bouncer(at)[::1]:10202 closing because: connect failed (age=0s)
2026-09-28 08:55:26.508 UTC [2591352] LOG S-0x5debcd766fe0: p0/bouncer(at)[::1]:10202 closing because: connect failed (age=0s)
2026-09-28 08:55:27.016 UTC [2591352] LOG got SIGQUIT, fast exit

PG_LOG

2026-09-28 08:55:21.832 UTC [2590600] LOG: received SIGHUP, reloading configuration files
2026-09-28 08:55:22.940 UTC [2591356] LOG: connection received: host=127.0.0.1 port=35716
2026-09-28 08:55:22.941 UTC [2591356] LOG: connection authenticated: user="postgres" method=trust (/home/myon/tmp/pytest-of-myon/pytest-6/pgdata/pg_hba.conf:12)
2026-09-28 08:55:22.941 UTC [2591356] LOG: connection authorized: user=postgres database=postgres
2026-09-28 08:55:22.943 UTC [2591356] LOG: disconnection: session time: 0:00:00.003 user=postgres database=postgres host=127.0.0.1 port=35716
2026-09-28 08:55:22.945 UTC [2591357] LOG: connection received: host=127.0.0.1 port=35722
2026-09-28 08:55:22.946 UTC [2591357] LOG: connection authenticated: user="postgres" method=trust (/home/myon/tmp/pytest-of-myon/pytest-6/pgdata/pg_hba.conf:12)
2026-09-28 08:55:22.946 UTC [2591357] LOG: connection authorized: user=postgres database=postgres
2026-09-28 08:55:22.948 UTC [2591357] LOG: disconnection: session time: 0:00:00.003 user=postgres database=postgres host=127.0.0.1 port=35722
2026-09-28 08:55:22.950 UTC [2590600] LOG: received SIGHUP, reloading configuration files
2026-09-28 08:55:22.951 UTC [2590600] LOG: parameter "ssl" changed to "on"
2026-09-28 08:55:22.951 UTC [2590600] LOG: parameter "ssl_ca_file" changed to "/home/myon/tmp/pytest-of-myon/pytest-6/certs/TestCA1/ca.crt"

________________________________________________________________ test_server_ssl_set_disable ________________________________________________________________
/home/myon/projects/postgresql/pgbouncer/pgbouncer/test/test_ssl.py:65: in test_server_ssl_set_disable
bouncer_tls.test()
bouncer_tls = <test.utils.Bouncer object at 0x703c928d2a50>
cert_dir = PosixPath('/home/myon/tmp/pytest-of-myon/pytest-6/certs')
pg = <test.utils.Postgres object at 0x703c92a0c2f0>
root = PosixPath('/home/myon/tmp/pytest-of-myon/pytest-6/certs/TestCA1/ca.crt')
/home/myon/projects/postgresql/pgbouncer/pgbouncer/test/utils.py:513: in test
return self.sql(";", **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^
kwargs = {}
self = <test.utils.Bouncer object at 0x703c928d2a50>
/home/myon/projects/postgresql/pgbouncer/pgbouncer/test/utils.py:406: in sql
with self.cur(**kwargs) as cur:
^^^^^^^^^^^^^^^^^^
kwargs = {}
params = None
query = ';'
self = <test.utils.Bouncer object at 0x703c928d2a50>
/usr/lib/python3.14/contextlib.py:141: in __enter__
return next(self.gen)
^^^^^^^^^^^^^^
self = <contextlib._GeneratorContextManager object at 0x703c926b1320>
/home/myon/projects/postgresql/pgbouncer/pgbouncer/test/utils.py:383: in cur
self.conn(
autocommit = True
kwargs = {}
self = <test.utils.Bouncer object at 0x703c928d2a50>
/home/myon/projects/postgresql/pgbouncer/pgbouncer/test/utils.py:360: in conn
conn = psycopg.connect(
autocommit = True
kwargs = {'dbname': 'p0', 'user': 'postgres', 'host': '127.0.0.1', 'port': 10459, ...}
self = <test.utils.Bouncer object at 0x703c928d2a50>
/usr/lib/python3/dist-packages/psycopg/connection.py:122: in connect
raise last_ex.with_traceback(None)
E psycopg.errors.ConnectionTimeout: connection timeout expired
attempt = {'dbname': 'p0', 'user': 'postgres', 'host': '127.0.0.1', 'port': 10459, ...}
attempts = [{'dbname': 'p0', 'user': 'postgres', 'host': '127.0.0.1', 'port': 10459, ...}]
autocommit = True
cls = <class 'psycopg.Connection'>
conn_errors = [(ConnectionTimeout('connection timeout expired'), "host: '127.0.0.1', port: 10459, hostaddr: '127.0.0.1'")]
conninfo = 'dbname=p0 user=postgres host=127.0.0.1 port=10459 connect_timeout=3 client_encoding=UTF8 hostaddr=127.0.0.1'
context = None
cursor_factory = None
descr = "host: '127.0.0.1', port: 10459, hostaddr: '127.0.0.1'"
gen = <generator object BaseConnection._connect_gen at 0x703c928d1840>
kwargs = {'dbname': 'p0', 'user': 'postgres', 'host': '127.0.0.1', 'port': 10459, ...}
last_ex = ConnectionTimeout('connection timeout expired')
params = {'dbname': 'p0', 'user': 'postgres', 'host': '127.0.0.1', 'port': 10459, ...}
prepare_threshold = 5
row_factory = None
rv = None
tdescr = ('127.0.0.1', 10459, '127.0.0.1')
timeout = 3
------------------------------------------------------------------- Captured stdout setup -------------------------------------------------------------------
server signaled
------------------------------------------------------------------- Captured stderr setup -------------------------------------------------------------------
+ pg_ctl -w --pgdata /home/myon/tmp/pytest-of-myon/pytest-6/pgdata reload
------------------------------------------------------------------- Captured stdout call --------------------------------------------------------------------
server signaled
------------------------------------------------------------------- Captured stderr call --------------------------------------------------------------------
+ pg_ctl -w --pgdata /home/myon/tmp/pytest-of-myon/pytest-6/pgdata reload
----------------------------------------------------------------- Captured stdout teardown ------------------------------------------------------------------

BOUNCER_LOG /home/myon/tmp/pytest-of-myon/pytest-6/test_server_ssl_set_disable0/bouncer

2026-09-28 08:55:28.035 UTC [2591407] LOG kernel file descriptor limit: 1024 (hard: 524288); max_client_conn: 10, max expected fd use: 149
2026-09-28 08:55:28.035 UTC [2591407] LOG listening on 127.0.0.1:10459
2026-09-28 08:55:28.035 UTC [2591407] LOG listening on unix:/home/myon/tmp/pytest-of-myon/pytest-6/test_server_ssl_set_disable0/bouncer/.s.PGSQL.10459
2026-09-28 08:55:28.035 UTC [2591407] LOG process up: PgBouncer 1.26.0, libevent 2.1.13-stable (epoll), adns: c-ares 1.34.8, tls: OpenSSL 3.6.4 25 Aug 2026
2026-09-28 08:55:28.130 UTC [2591407] LOG C-0x586e00b282d0: (nodb)/pgbouncer(at)unix(2584485):10459 pgbouncer access from unix socket
2026-09-28 08:55:28.130 UTC [2591407] LOG C-0x586e00b282d0: pgbouncer/pgbouncer(at)unix(2584485):10459 login attempt: db=pgbouncer user=pgbouncer tls=no replication=no
2026-09-28 08:55:28.132 UTC [2591407] LOG C-0x586e00b282d0: pgbouncer/pgbouncer(at)unix(2584485):10459 closing because: client close request (age=0s)
2026-09-28 08:55:28.134 UTC [2591407] LOG C-0x586e00b282d0: (nodb)/pgbouncer(at)unix(2584485):10459 pgbouncer access from unix socket
2026-09-28 08:55:28.134 UTC [2591407] LOG C-0x586e00b282d0: pgbouncer/pgbouncer(at)unix(2584485):10459 login attempt: db=pgbouncer user=pgbouncer tls=no replication=no
2026-09-28 08:55:28.134 UTC [2591407] LOG C-0x586e00b282d0: pgbouncer/pgbouncer(at)unix(2584485):10459 closing because: client close request (age=0s)
2026-09-28 08:55:29.153 UTC [2591407] LOG C-0x586e00b282d0: p0/postgres(at)127(dot)0(dot)0(dot)1:45004 login attempt: db=p0 user=postgres tls=no replication=no
2026-09-28 08:55:29.153 UTC [2591407] LOG S-0x586e00b4ffe0: p0/bouncer(at)[::1]:10202 closing because: connect failed (age=0s)
2026-09-28 08:55:30.370 UTC [2591407] LOG S-0x586e00b4ffe0: p0/bouncer(at)[::1]:10202 closing because: connect failed (age=0s)
2026-09-28 08:55:31.703 UTC [2591407] LOG S-0x586e00b4ffe0: p0/bouncer(at)[::1]:10202 closing because: connect failed (age=0s)
2026-09-28 08:55:32.205 UTC [2591407] LOG got SIGQUIT, fast exit

PG_LOG

2026-09-28 08:55:27.021 UTC [2590600] LOG: received SIGHUP, reloading configuration files
2026-09-28 08:55:27.022 UTC [2590600] LOG: parameter "ssl" removed from configuration file, reset to default
2026-09-28 08:55:27.022 UTC [2590600] LOG: parameter "ssl_ca_file" removed from configuration file, reset to default
2026-09-28 08:55:28.137 UTC [2591410] LOG: connection received: host=127.0.0.1 port=35738
2026-09-28 08:55:28.138 UTC [2591410] LOG: connection authenticated: user="postgres" method=trust (/home/myon/tmp/pytest-of-myon/pytest-6/pgdata/pg_hba.conf:12)
2026-09-28 08:55:28.138 UTC [2591410] LOG: connection authorized: user=postgres database=postgres
2026-09-28 08:55:28.140 UTC [2591410] LOG: disconnection: session time: 0:00:00.004 user=postgres database=postgres host=127.0.0.1 port=35738
2026-09-28 08:55:28.142 UTC [2591411] LOG: connection received: host=127.0.0.1 port=35754
2026-09-28 08:55:28.144 UTC [2591411] LOG: connection authenticated: user="postgres" method=trust (/home/myon/tmp/pytest-of-myon/pytest-6/pgdata/pg_hba.conf:12)
2026-09-28 08:55:28.144 UTC [2591411] LOG: connection authorized: user=postgres database=postgres
2026-09-28 08:55:28.147 UTC [2591411] LOG: disconnection: session time: 0:00:00.004 user=postgres database=postgres host=127.0.0.1 port=35754
2026-09-28 08:55:28.149 UTC [2590600] LOG: received SIGHUP, reloading configuration files
2026-09-28 08:55:28.150 UTC [2590600] LOG: parameter "ssl" changed to "on"
2026-09-28 08:55:28.151 UTC [2590600] LOG: parameter "ssl_ca_file" changed to "/home/myon/tmp/pytest-of-myon/pytest-6/certs/TestCA1/ca.crt"

________________________________________________________________ test_server_ssl_set_enable _________________________________________________________________
/home/myon/projects/postgresql/pgbouncer/pgbouncer/test/test_ssl.py:96: in test_server_ssl_set_enable
bouncer_tls.test()
bouncer_tls = <test.utils.Bouncer object at 0x703c928d0e50>
cert_dir = PosixPath('/home/myon/tmp/pytest-of-myon/pytest-6/certs')
pg = <test.utils.Postgres object at 0x703c92a0c2f0>
root = PosixPath('/home/myon/tmp/pytest-of-myon/pytest-6/certs/TestCA1/ca.crt')
/home/myon/projects/postgresql/pgbouncer/pgbouncer/test/utils.py:513: in test
return self.sql(";", **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^
kwargs = {}
self = <test.utils.Bouncer object at 0x703c928d0e50>
/home/myon/projects/postgresql/pgbouncer/pgbouncer/test/utils.py:406: in sql
with self.cur(**kwargs) as cur:
^^^^^^^^^^^^^^^^^^
kwargs = {}
params = None
query = ';'
self = <test.utils.Bouncer object at 0x703c928d0e50>
/usr/lib/python3.14/contextlib.py:141: in __enter__
return next(self.gen)
^^^^^^^^^^^^^^
self = <contextlib._GeneratorContextManager object at 0x703c927ffb60>
/home/myon/projects/postgresql/pgbouncer/pgbouncer/test/utils.py:383: in cur
self.conn(
autocommit = True
kwargs = {}
self = <test.utils.Bouncer object at 0x703c928d0e50>
/home/myon/projects/postgresql/pgbouncer/pgbouncer/test/utils.py:360: in conn
conn = psycopg.connect(
autocommit = True
kwargs = {'dbname': 'p0', 'user': 'postgres', 'host': '127.0.0.1', 'port': 10460, ...}
self = <test.utils.Bouncer object at 0x703c928d0e50>
/usr/lib/python3/dist-packages/psycopg/connection.py:122: in connect
raise last_ex.with_traceback(None)
E psycopg.errors.ConnectionTimeout: connection timeout expired
attempt = {'dbname': 'p0', 'user': 'postgres', 'host': '127.0.0.1', 'port': 10460, ...}
attempts = [{'dbname': 'p0', 'user': 'postgres', 'host': '127.0.0.1', 'port': 10460, ...}]
autocommit = True
cls = <class 'psycopg.Connection'>
conn_errors = [(ConnectionTimeout('connection timeout expired'), "host: '127.0.0.1', port: 10460, hostaddr: '127.0.0.1'")]
conninfo = 'dbname=p0 user=postgres host=127.0.0.1 port=10460 connect_timeout=3 client_encoding=UTF8 hostaddr=127.0.0.1'
context = None
cursor_factory = None
descr = "host: '127.0.0.1', port: 10460, hostaddr: '127.0.0.1'"
gen = <generator object BaseConnection._connect_gen at 0x703c928d1340>
kwargs = {'dbname': 'p0', 'user': 'postgres', 'host': '127.0.0.1', 'port': 10460, ...}
last_ex = ConnectionTimeout('connection timeout expired')
params = {'dbname': 'p0', 'user': 'postgres', 'host': '127.0.0.1', 'port': 10460, ...}
prepare_threshold = 5
row_factory = None
rv = None
tdescr = ('127.0.0.1', 10460, '127.0.0.1')
timeout = 3
------------------------------------------------------------------- Captured stdout setup -------------------------------------------------------------------
server signaled
------------------------------------------------------------------- Captured stderr setup -------------------------------------------------------------------
+ pg_ctl -w --pgdata /home/myon/tmp/pytest-of-myon/pytest-6/pgdata reload
------------------------------------------------------------------- Captured stdout call --------------------------------------------------------------------
server signaled
------------------------------------------------------------------- Captured stderr call --------------------------------------------------------------------
+ pg_ctl -w --pgdata /home/myon/tmp/pytest-of-myon/pytest-6/pgdata reload
----------------------------------------------------------------- Captured stdout teardown ------------------------------------------------------------------

BOUNCER_LOG /home/myon/tmp/pytest-of-myon/pytest-6/test_server_ssl_set_enable0/bouncer

2026-09-28 08:55:33.225 UTC [2591427] LOG kernel file descriptor limit: 1024 (hard: 524288); max_client_conn: 10, max expected fd use: 149
2026-09-28 08:55:33.225 UTC [2591427] LOG listening on 127.0.0.1:10460
2026-09-28 08:55:33.225 UTC [2591427] LOG listening on unix:/home/myon/tmp/pytest-of-myon/pytest-6/test_server_ssl_set_enable0/bouncer/.s.PGSQL.10460
2026-09-28 08:55:33.225 UTC [2591427] LOG process up: PgBouncer 1.26.0, libevent 2.1.13-stable (epoll), adns: c-ares 1.34.8, tls: OpenSSL 3.6.4 25 Aug 2026
2026-09-28 08:55:33.319 UTC [2591427] LOG C-0x61a27ea2f2c0: (nodb)/pgbouncer(at)unix(2584485):10460 pgbouncer access from unix socket
2026-09-28 08:55:33.319 UTC [2591427] LOG C-0x61a27ea2f2c0: pgbouncer/pgbouncer(at)unix(2584485):10460 login attempt: db=pgbouncer user=pgbouncer tls=no replication=no
2026-09-28 08:55:33.321 UTC [2591427] LOG C-0x61a27ea2f2c0: pgbouncer/pgbouncer(at)unix(2584485):10460 closing because: client close request (age=0s)
2026-09-28 08:55:33.323 UTC [2591427] LOG C-0x61a27ea2f2c0: (nodb)/pgbouncer(at)unix(2584485):10460 pgbouncer access from unix socket
2026-09-28 08:55:33.323 UTC [2591427] LOG C-0x61a27ea2f2c0: pgbouncer/pgbouncer(at)unix(2584485):10460 login attempt: db=pgbouncer user=pgbouncer tls=no replication=no
2026-09-28 08:55:33.324 UTC [2591427] LOG C-0x61a27ea2f2c0: pgbouncer/pgbouncer(at)unix(2584485):10460 closing because: client close request (age=0s)
2026-09-28 08:55:34.347 UTC [2591427] LOG C-0x61a27ea2f2c0: p0/postgres(at)127(dot)0(dot)0(dot)1:53036 login attempt: db=p0 user=postgres tls=no replication=no
2026-09-28 08:55:34.348 UTC [2591427] LOG S-0x61a27ea56f90: p0/bouncer(at)[::1]:10202 closing because: connect failed (age=0s)
2026-09-28 08:55:35.560 UTC [2591427] LOG S-0x61a27ea56f90: p0/bouncer(at)[::1]:10202 closing because: connect failed (age=0s)
2026-09-28 08:55:36.893 UTC [2591427] LOG S-0x61a27ea56f90: p0/bouncer(at)[::1]:10202 closing because: connect failed (age=0s)
2026-09-28 08:55:37.401 UTC [2591427] LOG got SIGQUIT, fast exit

PG_LOG

2026-09-28 08:55:32.210 UTC [2590600] LOG: received SIGHUP, reloading configuration files
2026-09-28 08:55:32.211 UTC [2590600] LOG: parameter "ssl" removed from configuration file, reset to default
2026-09-28 08:55:32.211 UTC [2590600] LOG: parameter "ssl_ca_file" removed from configuration file, reset to default
2026-09-28 08:55:33.327 UTC [2591430] LOG: connection received: host=127.0.0.1 port=35656
2026-09-28 08:55:33.328 UTC [2591430] LOG: connection authenticated: user="postgres" method=trust (/home/myon/tmp/pytest-of-myon/pytest-6/pgdata/pg_hba.conf:12)
2026-09-28 08:55:33.328 UTC [2591430] LOG: connection authorized: user=postgres database=postgres
2026-09-28 08:55:33.330 UTC [2591430] LOG: disconnection: session time: 0:00:00.004 user=postgres database=postgres host=127.0.0.1 port=35656
2026-09-28 08:55:33.332 UTC [2591431] LOG: connection received: host=127.0.0.1 port=35664
2026-09-28 08:55:33.334 UTC [2591431] LOG: connection authenticated: user="postgres" method=trust (/home/myon/tmp/pytest-of-myon/pytest-6/pgdata/pg_hba.conf:12)
2026-09-28 08:55:33.334 UTC [2591431] LOG: connection authorized: user=postgres database=postgres
2026-09-28 08:55:33.340 UTC [2591431] LOG: disconnection: session time: 0:00:00.008 user=postgres database=postgres host=127.0.0.1 port=35664
2026-09-28 08:55:33.344 UTC [2590600] LOG: received SIGHUP, reloading configuration files
2026-09-28 08:55:33.345 UTC [2590600] LOG: parameter "ssl" changed to "on"
2026-09-28 08:55:33.345 UTC [2590600] LOG: parameter "ssl_ca_file" changed to "/home/myon/tmp/pytest-of-myon/pytest-6/certs/TestCA1/ca.crt"

__________________________________________________________________ test_server_ssl_verify ___________________________________________________________________
/home/myon/projects/postgresql/pgbouncer/pgbouncer/test/test_ssl.py:132: in test_server_ssl_verify
bouncer_tls.log_contains(r"certificate verify failed"),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
bouncer_tls = <test.utils.Bouncer object at 0x703c928d2a50>
cert_dir = PosixPath('/home/myon/tmp/pytest-of-myon/pytest-6/certs')
pg = <test.utils.Postgres object at 0x703c92a0c2f0>
root = PosixPath('/home/myon/tmp/pytest-of-myon/pytest-6/certs/TestCA1/ca.crt')
wrong_root = PosixPath('/home/myon/tmp/pytest-of-myon/pytest-6/certs/TestCA2/ca.crt')
/usr/lib/python3.14/contextlib.py:148: in __exit__
next(self.gen)
self = <contextlib._GeneratorContextManager object at 0x703c927ff8c0>
traceback = None
typ = None
value = None
/home/myon/projects/postgresql/pgbouncer/pgbouncer/test/utils.py:1268: in log_contains
assert re.search(re_string, content)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E AssertionError
content = '2026-09-28 08:55:39.526 UTC [2591448] LOG C-0x5b884c7462b0: p0/postgres(at)127(dot)0(dot)0(dot)1:58850 login attempt: db=p0 user=pos...-28 08:55:42.750 UTC [2591448] LOG S-0x5b884c768f50: p0/bouncer(at)[::1]:10202 closing because: connect failed (age=0s)\n'
f = <_io.TextIOWrapper name='/home/myon/tmp/pytest-of-myon/pytest-6/test_server_ssl_verify0/bouncer/test.log' mode='r' encoding='UTF-8'>
re_string = 'certificate verify failed'
self = <test.utils.Bouncer object at 0x703c928d2a50>
times = None
------------------------------------------------------------------- Captured stdout setup -------------------------------------------------------------------
server signaled
------------------------------------------------------------------- Captured stderr setup -------------------------------------------------------------------
+ pg_ctl -w --pgdata /home/myon/tmp/pytest-of-myon/pytest-6/pgdata reload
------------------------------------------------------------------- Captured stdout call --------------------------------------------------------------------
server signaled
------------------------------------------------------------------- Captured stderr call --------------------------------------------------------------------
+ pg_ctl -w --pgdata /home/myon/tmp/pytest-of-myon/pytest-6/pgdata reload
----------------------------------------------------------------- Captured stdout teardown ------------------------------------------------------------------

BOUNCER_LOG /home/myon/tmp/pytest-of-myon/pytest-6/test_server_ssl_verify0/bouncer

2026-09-28 08:55:38.414 UTC [2591448] LOG kernel file descriptor limit: 1024 (hard: 524288); max_client_conn: 10, max expected fd use: 149
2026-09-28 08:55:38.415 UTC [2591448] LOG listening on 127.0.0.1:10461
2026-09-28 08:55:38.415 UTC [2591448] LOG listening on unix:/home/myon/tmp/pytest-of-myon/pytest-6/test_server_ssl_verify0/bouncer/.s.PGSQL.10461
2026-09-28 08:55:38.415 UTC [2591448] LOG process up: PgBouncer 1.26.0, libevent 2.1.13-stable (epoll), adns: c-ares 1.34.8, tls: OpenSSL 3.6.4 25 Aug 2026
2026-09-28 08:55:38.510 UTC [2591448] LOG C-0x5b884c7462b0: (nodb)/pgbouncer(at)unix(2584485):10461 pgbouncer access from unix socket
2026-09-28 08:55:38.510 UTC [2591448] LOG C-0x5b884c7462b0: pgbouncer/pgbouncer(at)unix(2584485):10461 login attempt: db=pgbouncer user=pgbouncer tls=no replication=no
2026-09-28 08:55:38.511 UTC [2591448] LOG C-0x5b884c7462b0: pgbouncer/pgbouncer(at)unix(2584485):10461 closing because: client close request (age=0s)
2026-09-28 08:55:38.512 UTC [2591448] LOG C-0x5b884c7462b0: (nodb)/pgbouncer(at)unix(2584485):10461 pgbouncer access from unix socket
2026-09-28 08:55:38.512 UTC [2591448] LOG C-0x5b884c7462b0: pgbouncer/pgbouncer(at)unix(2584485):10461 login attempt: db=pgbouncer user=pgbouncer tls=no replication=no
2026-09-28 08:55:38.512 UTC [2591448] LOG C-0x5b884c7462b0: pgbouncer/pgbouncer(at)unix(2584485):10461 closing because: client close request (age=0s)
2026-09-28 08:55:38.512 UTC [2591448] LOG C-0x5b884c7462b0: (nodb)/pgbouncer(at)unix(2584485):10461 pgbouncer access from unix socket
2026-09-28 08:55:38.512 UTC [2591448] LOG C-0x5b884c7462b0: pgbouncer/pgbouncer(at)unix(2584485):10461 login attempt: db=pgbouncer user=pgbouncer tls=no replication=no
2026-09-28 08:55:38.513 UTC [2591448] LOG C-0x5b884c7462b0: pgbouncer/pgbouncer(at)unix(2584485):10461 closing because: client close request (age=0s)
2026-09-28 08:55:39.526 UTC [2591448] LOG C-0x5b884c7462b0: p0/postgres(at)127(dot)0(dot)0(dot)1:58850 login attempt: db=p0 user=postgres tls=no replication=no
2026-09-28 08:55:39.526 UTC [2591448] LOG S-0x5b884c768f50: p0/bouncer(at)[::1]:10202 closing because: connect failed (age=0s)
2026-09-28 08:55:40.749 UTC [2591448] LOG S-0x5b884c768f50: p0/bouncer(at)[::1]:10202 closing because: connect failed (age=0s)
2026-09-28 08:55:41.750 UTC [2591448] LOG S-0x5b884c768f50: p0/bouncer(at)[::1]:10202 closing because: connect failed (age=0s)
2026-09-28 08:55:42.750 UTC [2591448] LOG S-0x5b884c768f50: p0/bouncer(at)[::1]:10202 closing because: connect failed (age=0s)
2026-09-28 08:55:43.568 UTC [2591448] LOG got SIGQUIT, fast exit

PG_LOG

2026-09-28 08:55:37.406 UTC [2590600] LOG: received SIGHUP, reloading configuration files
2026-09-28 08:55:37.407 UTC [2590600] LOG: parameter "ssl" removed from configuration file, reset to default
2026-09-28 08:55:37.407 UTC [2590600] LOG: parameter "ssl_ca_file" removed from configuration file, reset to default
2026-09-28 08:55:38.514 UTC [2591451] LOG: connection received: host=127.0.0.1 port=36102
2026-09-28 08:55:38.515 UTC [2591451] LOG: connection authenticated: user="postgres" method=trust (/home/myon/tmp/pytest-of-myon/pytest-6/pgdata/pg_hba.conf:12)
2026-09-28 08:55:38.515 UTC [2591451] LOG: connection authorized: user=postgres database=postgres
2026-09-28 08:55:38.517 UTC [2591451] LOG: disconnection: session time: 0:00:00.003 user=postgres database=postgres host=127.0.0.1 port=36102
2026-09-28 08:55:38.519 UTC [2591452] LOG: connection received: host=127.0.0.1 port=36108
2026-09-28 08:55:38.520 UTC [2591452] LOG: connection authenticated: user="postgres" method=trust (/home/myon/tmp/pytest-of-myon/pytest-6/pgdata/pg_hba.conf:12)
2026-09-28 08:55:38.520 UTC [2591452] LOG: connection authorized: user=postgres database=postgres
2026-09-28 08:55:38.522 UTC [2591452] LOG: disconnection: session time: 0:00:00.002 user=postgres database=postgres host=127.0.0.1 port=36108
2026-09-28 08:55:38.524 UTC [2590600] LOG: received SIGHUP, reloading configuration files
2026-09-28 08:55:38.524 UTC [2590600] LOG: parameter "ssl" changed to "on"
2026-09-28 08:55:38.524 UTC [2590600] LOG: parameter "ssl_ca_file" changed to "/home/myon/tmp/pytest-of-myon/pytest-6/certs/TestCA1/ca.crt"

...

Just dumping that here so it doesn't get lost, I'll keep poking
around.

Christoph

In response to

Responses

Browse pgsql-pkg-debian by date

  From Date Subject
Next Message Christoph Berg 2026-09-28 10:40:02 Re: pgbouncer | Update PgBouncer to 1.26.0 (!4)
Previous Message Bradford Boyle 2026-09-28 03:31:36 Re: pgbouncer | Update PgBouncer to 1.26.0 (!4)