From: Fantix King Date: Mon, 31 Aug 2020 07:41:00 +0000 (-0400) Subject: Fix AsyncEngine connect() bug when pool is exhausted X-Git-Tag: rel_1_4_0b1~138 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cae33a79017d955c7a35bf1810c18e13fd00b4f3;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Fix AsyncEngine connect() bug when pool is exhausted ### Description Decorating the referenced `await_fallback` with `staticmethod` would stop `AsyncAdaptedQueue.await_` from being treated as a bound method. ### Checklist This pull request is: - [x] A short code fix Fixes #5546 **Have a nice day!** Closes: #5547 Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/5547 Pull-request-sha: 6f18ee290e7d9fe24ce2a4a4ed8069b46082ca18 Change-Id: Ie335ee650f1dee0d1fce59e448217a48307b3435 --- 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(