embeddings: register pool close() at interpreter exit
Without this, every `second-brain process` run prints couldn't stop thread 'pool-1-worker-N' within 5.0 seconds during interpreter shutdown — psycopg_pool's background workers don't get a clean stop signal before Python's threading shutdown deadline. Registering close_pool via atexit the first time we open the pool fixes it without changing any API. `close_pool` is already idempotent, so the explicit teardown path in the smoke test (which calls it directly) and the atexit path coexist safely.
This commit is contained in:
parent
f44ac2ff7c
commit
0d9ebc9cc7
@ -23,6 +23,7 @@ index, not authoritative state.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import atexit
|
||||
import logging
|
||||
import os
|
||||
from typing import Any
|
||||
@ -73,6 +74,11 @@ def _get_pool() -> ConnectionPool | None:
|
||||
if not dsn:
|
||||
return None
|
||||
_pool = ConnectionPool(dsn, min_size=1, max_size=4, open=True, timeout=10)
|
||||
# Make sure the pool's worker threads get a clean shutdown when the
|
||||
# interpreter exits; without this psycopg_pool prints
|
||||
# "couldn't stop thread pool-1-worker-N within 5.0 seconds" on every
|
||||
# `second-brain process` run.
|
||||
atexit.register(close_pool)
|
||||
return _pool
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user