From 0a9d4de1265df4f96a9c6a58c2881891ee8d6209 Mon Sep 17 00:00:00 2001 From: Jack Robison Date: Fri, 1 May 2020 11:40:52 -0400 Subject: [PATCH] include write lock in try/finally --- lbry/wallet/database.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lbry/wallet/database.py b/lbry/wallet/database.py index 5aec29649..ec92d6522 100644 --- a/lbry/wallet/database.py +++ b/lbry/wallet/database.py @@ -137,15 +137,15 @@ class AIOSQLite: async def run(self, fun, *args, **kwargs): self.writers += 1 self.read_ready.clear() - async with self.write_lock: - try: + try: + async with self.write_lock: return await asyncio.get_event_loop().run_in_executor( self.writer_executor, lambda: self.__run_transaction(fun, *args, **kwargs) ) - finally: - self.writers -= 1 - if not self.writers: - self.read_ready.set() + finally: + self.writers -= 1 + if not self.writers: + self.read_ready.set() def __run_transaction(self, fun: Callable[[sqlite3.Connection, Any, Any], Any], *args, **kwargs): self.writer_connection.execute('begin')