From: Fantix King Date: Sat, 29 Aug 2020 17:06:55 +0000 (-0500) Subject: Fix AsyncEngine connect() bug when pool is exhausted X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6f18ee290e7d9fe24ce2a4a4ed8069b46082ca18;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Fix AsyncEngine connect() bug when pool is exhausted Fixes #5546 --- diff --git a/lib/sqlalchemy/util/queue.py b/lib/sqlalchemy/util/queue.py index 5f71c7bd6f..58a88e4ede 100644 --- a/lib/sqlalchemy/util/queue.py +++ b/lib/sqlalchemy/util/queue.py @@ -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: diff --git a/test/ext/asyncio/test_engine_py3k.py b/test/ext/asyncio/test_engine_py3k.py index ec513cb649..705df465b4 100644 --- a/test/ext/asyncio/test_engine_py3k.py +++ b/test/ext/asyncio/test_engine_py3k.py @@ -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(