Re: pgbouncer | Update PgBouncer to 1.26.0 (!4) - Mailing list pgsql-pkg-debian

From Christoph Berg
Subject Re: pgbouncer | Update PgBouncer to 1.26.0 (!4)
Date
Msg-id aroyMgZwq36jC4cj@msg.df7cb.de
Whole thread
In response to Re: pgbouncer | Update PgBouncer to 1.26.0 (!4)  (Bradford Boyle <bradford.d.boyle@gmail.com>)
Responses Re: pgbouncer | Update PgBouncer to 1.26.0 (!4)
List 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
objectat 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_auth010275 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_auth010275 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_auth010275 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_auth010275 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_auth010275 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
expectedfd 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@unix(2584485):10458 pgbouncer access from
unixsocket 
2026-09-28 08:55:22.937 UTC [2591352] LOG C-0x5debcd73f2b0: pgbouncer/pgbouncer@unix(2584485):10458 login attempt:
db=pgbounceruser=pgbouncer tls=no replication=no 
2026-09-28 08:55:22.937 UTC [2591352] LOG C-0x5debcd73f2b0: pgbouncer/pgbouncer@unix(2584485):10458 closing because:
clientclose request (age=0s) 
2026-09-28 08:55:22.938 UTC [2591352] LOG C-0x5debcd73f2b0: (nodb)/pgbouncer@unix(2584485):10458 pgbouncer access from
unixsocket 
2026-09-28 08:55:22.938 UTC [2591352] LOG C-0x5debcd73f2b0: pgbouncer/pgbouncer@unix(2584485):10458 login attempt:
db=pgbounceruser=pgbouncer tls=no replication=no 
2026-09-28 08:55:22.938 UTC [2591352] LOG C-0x5debcd73f2b0: pgbouncer/pgbouncer@unix(2584485):10458 closing because:
clientclose request (age=0s) 
2026-09-28 08:55:23.952 UTC [2591352] LOG C-0x5debcd73f2b0: p0/postgres@127.0.0.1:34990 login attempt: db=p0
user=postgrestls=no replication=no 
2026-09-28 08:55:23.952 UTC [2591352] LOG S-0x5debcd766fe0: p0/bouncer@[::1]:10202 closing because: connect failed
(age=0s)
2026-09-28 08:55:25.176 UTC [2591352] LOG S-0x5debcd766fe0: p0/bouncer@[::1]:10202 closing because: connect failed
(age=0s)
2026-09-28 08:55:26.508 UTC [2591352] LOG S-0x5debcd766fe0: p0/bouncer@[::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.1port=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.1port=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
expectedfd 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@unix(2584485):10459 pgbouncer access from
unixsocket 
2026-09-28 08:55:28.130 UTC [2591407] LOG C-0x586e00b282d0: pgbouncer/pgbouncer@unix(2584485):10459 login attempt:
db=pgbounceruser=pgbouncer tls=no replication=no 
2026-09-28 08:55:28.132 UTC [2591407] LOG C-0x586e00b282d0: pgbouncer/pgbouncer@unix(2584485):10459 closing because:
clientclose request (age=0s) 
2026-09-28 08:55:28.134 UTC [2591407] LOG C-0x586e00b282d0: (nodb)/pgbouncer@unix(2584485):10459 pgbouncer access from
unixsocket 
2026-09-28 08:55:28.134 UTC [2591407] LOG C-0x586e00b282d0: pgbouncer/pgbouncer@unix(2584485):10459 login attempt:
db=pgbounceruser=pgbouncer tls=no replication=no 
2026-09-28 08:55:28.134 UTC [2591407] LOG C-0x586e00b282d0: pgbouncer/pgbouncer@unix(2584485):10459 closing because:
clientclose request (age=0s) 
2026-09-28 08:55:29.153 UTC [2591407] LOG C-0x586e00b282d0: p0/postgres@127.0.0.1:45004 login attempt: db=p0
user=postgrestls=no replication=no 
2026-09-28 08:55:29.153 UTC [2591407] LOG S-0x586e00b4ffe0: p0/bouncer@[::1]:10202 closing because: connect failed
(age=0s)
2026-09-28 08:55:30.370 UTC [2591407] LOG S-0x586e00b4ffe0: p0/bouncer@[::1]:10202 closing because: connect failed
(age=0s)
2026-09-28 08:55:31.703 UTC [2591407] LOG S-0x586e00b4ffe0: p0/bouncer@[::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.1port=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.1port=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
expectedfd 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@unix(2584485):10460 pgbouncer access from
unixsocket 
2026-09-28 08:55:33.319 UTC [2591427] LOG C-0x61a27ea2f2c0: pgbouncer/pgbouncer@unix(2584485):10460 login attempt:
db=pgbounceruser=pgbouncer tls=no replication=no 
2026-09-28 08:55:33.321 UTC [2591427] LOG C-0x61a27ea2f2c0: pgbouncer/pgbouncer@unix(2584485):10460 closing because:
clientclose request (age=0s) 
2026-09-28 08:55:33.323 UTC [2591427] LOG C-0x61a27ea2f2c0: (nodb)/pgbouncer@unix(2584485):10460 pgbouncer access from
unixsocket 
2026-09-28 08:55:33.323 UTC [2591427] LOG C-0x61a27ea2f2c0: pgbouncer/pgbouncer@unix(2584485):10460 login attempt:
db=pgbounceruser=pgbouncer tls=no replication=no 
2026-09-28 08:55:33.324 UTC [2591427] LOG C-0x61a27ea2f2c0: pgbouncer/pgbouncer@unix(2584485):10460 closing because:
clientclose request (age=0s) 
2026-09-28 08:55:34.347 UTC [2591427] LOG C-0x61a27ea2f2c0: p0/postgres@127.0.0.1:53036 login attempt: db=p0
user=postgrestls=no replication=no 
2026-09-28 08:55:34.348 UTC [2591427] LOG S-0x61a27ea56f90: p0/bouncer@[::1]:10202 closing because: connect failed
(age=0s)
2026-09-28 08:55:35.560 UTC [2591427] LOG S-0x61a27ea56f90: p0/bouncer@[::1]:10202 closing because: connect failed
(age=0s)
2026-09-28 08:55:36.893 UTC [2591427] LOG S-0x61a27ea56f90: p0/bouncer@[::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.1port=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.1port=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@127.0.0.1:58850 login
attempt:db=p0 user=pos...-28 08:55:42.750 UTC [2591448] LOG S-0x5b884c768f50: p0/bouncer@[::1]:10202 closing because:
connectfailed (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
expectedfd 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@unix(2584485):10461 pgbouncer access from
unixsocket 
2026-09-28 08:55:38.510 UTC [2591448] LOG C-0x5b884c7462b0: pgbouncer/pgbouncer@unix(2584485):10461 login attempt:
db=pgbounceruser=pgbouncer tls=no replication=no 
2026-09-28 08:55:38.511 UTC [2591448] LOG C-0x5b884c7462b0: pgbouncer/pgbouncer@unix(2584485):10461 closing because:
clientclose request (age=0s) 
2026-09-28 08:55:38.512 UTC [2591448] LOG C-0x5b884c7462b0: (nodb)/pgbouncer@unix(2584485):10461 pgbouncer access from
unixsocket 
2026-09-28 08:55:38.512 UTC [2591448] LOG C-0x5b884c7462b0: pgbouncer/pgbouncer@unix(2584485):10461 login attempt:
db=pgbounceruser=pgbouncer tls=no replication=no 
2026-09-28 08:55:38.512 UTC [2591448] LOG C-0x5b884c7462b0: pgbouncer/pgbouncer@unix(2584485):10461 closing because:
clientclose request (age=0s) 
2026-09-28 08:55:38.512 UTC [2591448] LOG C-0x5b884c7462b0: (nodb)/pgbouncer@unix(2584485):10461 pgbouncer access from
unixsocket 
2026-09-28 08:55:38.512 UTC [2591448] LOG C-0x5b884c7462b0: pgbouncer/pgbouncer@unix(2584485):10461 login attempt:
db=pgbounceruser=pgbouncer tls=no replication=no 
2026-09-28 08:55:38.513 UTC [2591448] LOG C-0x5b884c7462b0: pgbouncer/pgbouncer@unix(2584485):10461 closing because:
clientclose request (age=0s) 
2026-09-28 08:55:39.526 UTC [2591448] LOG C-0x5b884c7462b0: p0/postgres@127.0.0.1:58850 login attempt: db=p0
user=postgrestls=no replication=no 
2026-09-28 08:55:39.526 UTC [2591448] LOG S-0x5b884c768f50: p0/bouncer@[::1]:10202 closing because: connect failed
(age=0s)
2026-09-28 08:55:40.749 UTC [2591448] LOG S-0x5b884c768f50: p0/bouncer@[::1]:10202 closing because: connect failed
(age=0s)
2026-09-28 08:55:41.750 UTC [2591448] LOG S-0x5b884c768f50: p0/bouncer@[::1]:10202 closing because: connect failed
(age=0s)
2026-09-28 08:55:42.750 UTC [2591448] LOG S-0x5b884c768f50: p0/bouncer@[::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.1port=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.1port=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



pgsql-pkg-debian by date:

Previous
From: Bradford Boyle
Date:
Subject: Re: pgbouncer | Update PgBouncer to 1.26.0 (!4)
Next
From: Christoph Berg
Date:
Subject: Re: pgbouncer | Update PgBouncer to 1.26.0 (!4)