]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
fix(pool): raise PoolError on reopening attempt
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Fri, 24 Apr 2026 13:38:25 +0000 (15:38 +0200)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Fri, 24 Apr 2026 14:50:49 +0000 (16:50 +0200)
This is not a breaking change because PoolError is a subclass of the
OperationalError previously raised.

See #1295.

psycopg_pool/psycopg_pool/base.py
tests/pool/test_pool_common.py
tests/pool/test_pool_common_async.py

index 9f68098fb0292e206353c980e4ba8a5861ed054c..1d888775a06e6bb97ca8b7f824914ce324c81890 100644 (file)
@@ -11,8 +11,6 @@ from random import random
 from typing import TYPE_CHECKING, Any
 from collections import Counter, deque
 
-from psycopg import errors as e
-
 from .errors import PoolClosed
 
 if TYPE_CHECKING:
@@ -132,9 +130,7 @@ class BasePool:
 
     def _check_open(self) -> None:
         if self._closed and self._opened:
-            raise e.OperationalError(
-                "pool has already been opened/closed and cannot be reused"
-            )
+            raise PoolClosed("pool has already been opened/closed and cannot be reused")
 
     def _check_open_getconn(self) -> None:
         if self._closed:
index c31db3f41dabd47b46bbfb45b4e7e85b9dbee617..34a35a6c6388e4253b03f5a1716f3d45334347dc 100644 (file)
@@ -491,7 +491,7 @@ def test_reopen(pool_cls, dsn):
     assert p._sched_runner is None
     assert not p._workers
 
-    with pytest.raises(psycopg.OperationalError, match="cannot be reused"):
+    with pytest.raises(pool.PoolClosed, match="cannot be reused"):
         p.open()
 
 
index e0435a80b619557f5ab51d838facef20a8ac2017..b301e27823293f6e183a8ce27569ec3ba706d658 100644 (file)
@@ -504,7 +504,7 @@ async def test_reopen(pool_cls, dsn):
     assert p._sched_runner is None
     assert not p._workers
 
-    with pytest.raises(psycopg.OperationalError, match="cannot be reused"):
+    with pytest.raises(pool.PoolClosed, match="cannot be reused"):
         await p.open()