Skip to content

v3.11.0

Latest

Choose a tag to compare

@vadv vadv released this 26 Jun 08:37
1f598e4

3.11.0: Talos clients can use client-specific pools

For user=talos, pg_doorman now selects the pool user in this order: clientId, srv-<clientId>, then the max token role (owner, read_write, read_only). This lets operators pre-create a pool for a service while clients keep using the Talos startup user.

Each Talos login writes one routing line:

[talos] auth: client_id=... pool=... role=... username=... route=personal_pool|service_pool|max_role

Backend application_name stays the Talos clientId, so SHOW SERVERS and pg_stat_activity still show the client service.

3.10.8: Cancelled backend startups clear their server stats row

Backend startup attempts now remove their SERVER_STATS row if connect_timeout cancels pool checkout or startup fails before a Server takes ownership. SHOW SERVERS, SHOW POOLS (sv_login), /api/servers, and /metrics no longer show a long-lived login backend for a blackholed PostgreSQL address.

With Patroni-assisted fallback, pg_doorman clears the failed local row before probing fallback candidates or waiting in retry backoff. Each visible SHOW SERVERS row now maps to an active startup attempt or an established server connection.

Upgrade notes

No config changes are required.

Talos still bypasses pg_hba for the resolved pool user. Keep per-service access in the token issuer policy or PostgreSQL grants.

Full changelog:
https://ozontech.github.io/pg_doorman/changelog.html


3.11.0: Talos направляет клиентов в пулы по clientId

Для подключений с user=talos pg_doorman выбирает учётную запись пула в таком порядке: clientId, srv-<clientId>, затем самая привилегированная роль из токена (owner, read_write, read_only). Так можно заранее завести пул для сервиса и не менять имя пользователя в строке подключения.

При входе через Talos pg_doorman пишет одну строку маршрутизации:

[talos] auth: client_id=... pool=... role=... username=... route=personal_pool|service_pool|max_role

В PostgreSQL application_name остаётся равным Talos clientId, поэтому SHOW SERVERS и pg_stat_activity по-прежнему показывают клиентский сервис.

3.10.8: отменённые подключения больше не висят в статистике

Когда pg_doorman начинает подключение к PostgreSQL, он создаёт строку SERVER_STATS. Теперь он удаляет её, если connect_timeout отменил ожидание соединения из пула или подключение сорвалось до завершения запуска. SHOW SERVERS, SHOW POOLS (sv_login), /api/servers и /metrics больше не показывают зависшую строку login для недоступного PostgreSQL.

Если включён Patroni-assisted fallback, pg_doorman удаляет строку неудачной локальной попытки перед проверкой резервных узлов и перед паузой до повтора. Каждая строка в SHOW SERVERS теперь соответствует активному подключению или попытке подключения.

Замечания по обновлению

Менять конфигурацию не нужно.

Talos по-прежнему не применяет pg_hba к выбранной учётной записи пула. Ограничивайте доступ на стороне сервиса, который выпускает токены, или через права PostgreSQL (GRANT/REVOKE).

Полная история изменений:
https://ozontech.github.io/pg_doorman/changelog.html