Switch recorder to use async_timeout instead of asyncio.wait_for (#78607)

This commit is contained in:
J. Nick Koston 2022-09-17 12:40:10 -05:00 committed by GitHub
parent 51b01fcd80
commit 6e4a0b9fdc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -13,6 +13,7 @@ import threading
import time
from typing import Any, TypeVar, cast
import async_timeout
from awesomeversion import AwesomeVersion
from lru import LRU # pylint: disable=no-name-in-module
from sqlalchemy import create_engine, event as sqlalchemy_event, exc, func, select
@ -1030,7 +1031,8 @@ class Recorder(threading.Thread):
task = DatabaseLockTask(database_locked, threading.Event(), False)
self.queue_task(task)
try:
await asyncio.wait_for(database_locked.wait(), timeout=DB_LOCK_TIMEOUT)
async with async_timeout.timeout(DB_LOCK_TIMEOUT):
await database_locked.wait()
except asyncio.TimeoutError as err:
task.database_unlock.set()
raise TimeoutError(