From 52a80f25098d95a27c99ec78286aa23a5df766c9 Mon Sep 17 00:00:00 2001 From: Daniele Varrazzo Date: Sat, 20 Feb 2021 01:19:35 +0100 Subject: [PATCH] Force pool num_workers to be > 0 it might work with num_workers = 0, however it's not trivial, there is some deadlock to avoid at creation time. --- psycopg3/psycopg3/pool.py | 4 ++++ tests/test_pool.py | 8 ++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/psycopg3/psycopg3/pool.py b/psycopg3/psycopg3/pool.py index 1e4fdc4bc..259ce2621 100644 --- a/psycopg3/psycopg3/pool.py +++ b/psycopg3/psycopg3/pool.py @@ -56,6 +56,10 @@ class ConnectionPool: self.__class__._num_pool += 1 name = f"pool-{self._num_pool}" + if num_workers < 1: + # TODO: allow num_workers to be 0 - sync pool? + raise ValueError("num_workers must be at least 1") + self.conninfo = conninfo self.kwargs: Dict[str, Any] = kwargs or {} self._configure: Callable[[Connection], None] diff --git a/tests/test_pool.py b/tests/test_pool.py index 72bb5c2b0..db50f85f9 100644 --- a/tests/test_pool.py +++ b/tests/test_pool.py @@ -11,18 +11,18 @@ from psycopg3.pq import TransactionStatus def test_minconn_maxconn(dsn): - p = pool.ConnectionPool(dsn, num_workers=0) + p = pool.ConnectionPool(dsn) assert p.minconn == p.maxconn == 4 - p = pool.ConnectionPool(dsn, minconn=2, num_workers=0) + p = pool.ConnectionPool(dsn, minconn=2) assert p.minconn == p.maxconn == 2 - p = pool.ConnectionPool(dsn, minconn=2, maxconn=4, num_workers=0) + p = pool.ConnectionPool(dsn, minconn=2, maxconn=4) assert p.minconn == 2 assert p.maxconn == 4 with pytest.raises(ValueError): - pool.ConnectionPool(dsn, minconn=4, maxconn=2, num_workers=0) + pool.ConnectionPool(dsn, minconn=4, maxconn=2) def test_its_really_a_pool(dsn): -- 2.47.2