]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Fix AsyncEngine connect() bug when pool is exhausted 5547/head
authorFantix King <fantix.king@gmail.com>
Sat, 29 Aug 2020 17:06:55 +0000 (12:06 -0500)
committerFantix King <fantix.king@gmail.com>
Sun, 30 Aug 2020 15:01:29 +0000 (10:01 -0500)
Fixes #5546

lib/sqlalchemy/util/queue.py
test/ext/asyncio/test_engine_py3k.py

index 5f71c7bd6f29fd35ba55776ed86ae5ef8b0a41e8..58a88e4ede9e291fcfe91f65b3a5444359fbf0a9 100644 (file)
@@ -202,7 +202,7 @@ class Queue:
 
 
 class AsyncAdaptedQueue:
-    await_ = await_fallback
+    await_ = staticmethod(await_fallback)
 
     def __init__(self, maxsize=0, use_lifo=False):
         if use_lifo:
index ec513cb649d2b2325bd99f8addd9732df34681e5..705df465b4d777ae5aaeebfbfc080a4fb2dada1f 100644 (file)
@@ -1,3 +1,5 @@
+import asyncio
+
 from sqlalchemy import Column
 from sqlalchemy import delete
 from sqlalchemy import exc
@@ -135,6 +137,16 @@ class AsyncEngineTest(EngineFixture):
                 trans.rollback(),
             )
 
+    @async_test
+    async def test_pool_exhausted(self, async_engine):
+        engine = create_async_engine(
+            testing.db.url, pool_size=1, max_overflow=0, pool_timeout=0.1,
+        )
+        async with engine.connect():
+            await assert_raises_message_async(
+                asyncio.TimeoutError, "", engine.connect(),
+            )
+
 
 class AsyncResultTest(EngineFixture):
     @testing.combinations(