From: Denis Laxalde Date: Fri, 12 Nov 2021 13:34:43 +0000 (+0100) Subject: Always stop monitoring fds in wait_{,conn_}async() X-Git-Tag: 3.0.5~10^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b33cdae70a1b1bf5190a5daeac05134b1091ad32;p=thirdparty%2Fpsycopg.git Always stop monitoring fds in wait_{,conn_}async() --- diff --git a/psycopg/psycopg/waiting.py b/psycopg/psycopg/waiting.py index 7563d4f44..635504309 100644 --- a/psycopg/psycopg/waiting.py +++ b/psycopg/psycopg/waiting.py @@ -135,11 +135,13 @@ async def wait_async(gen: PQGen[RV], fileno: int) -> RV: loop.add_reader(fileno, wakeup, Ready.R) if writer: loop.add_writer(fileno, wakeup, Ready.W) - await ev.wait() - if reader: - loop.remove_reader(fileno) - if writer: - loop.remove_writer(fileno) + try: + await ev.wait() + finally: + if reader: + loop.remove_reader(fileno) + if writer: + loop.remove_writer(fileno) s = gen.send(ready) except StopIteration as ex: @@ -188,11 +190,13 @@ async def wait_conn_async( loop.add_reader(fileno, wakeup, Ready.R) if writer: loop.add_writer(fileno, wakeup, Ready.W) - await wait_for(ev.wait(), timeout) - if reader: - loop.remove_reader(fileno) - if writer: - loop.remove_writer(fileno) + try: + await wait_for(ev.wait(), timeout) + finally: + if reader: + loop.remove_reader(fileno) + if writer: + loop.remove_writer(fileno) fileno, s = gen.send(ready) except TimeoutError: