From 00118a6f965fb8bd04025fa13bdbca86841e96d8 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Mon, 30 Jan 2023 08:00:34 -1000 Subject: [PATCH] Speed up live history setup if there is no pending data to commit (#86942) --- homeassistant/components/recorder/core.py | 2 ++ tests/components/logbook/test_websocket_api.py | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/homeassistant/components/recorder/core.py b/homeassistant/components/recorder/core.py index 62c1213a4a4..ddca32e6970 100644 --- a/homeassistant/components/recorder/core.py +++ b/homeassistant/components/recorder/core.py @@ -1044,6 +1044,8 @@ class Recorder(threading.Thread): async def async_block_till_done(self) -> None: """Async version of block_till_done.""" + if self._queue.empty() and not self._event_session_has_pending_writes(): + return event = asyncio.Event() self.queue_task(SynchronizeTask(event)) await event.wait() diff --git a/tests/components/logbook/test_websocket_api.py b/tests/components/logbook/test_websocket_api.py index 3b0bc4c24f1..410443a1396 100644 --- a/tests/components/logbook/test_websocket_api.py +++ b/tests/components/logbook/test_websocket_api.py @@ -2303,6 +2303,11 @@ async def test_recorder_is_far_behind(recorder_mock, hass, hass_ws_client, caplo hass.bus.async_fire("mock_event", {"device_id": device.id, "message": "1"}) await hass.async_block_till_done() + msg = await asyncio.wait_for(websocket_client.receive_json(), 2) + assert msg["id"] == 7 + assert msg["type"] == "event" + assert msg["event"]["events"] == [] + msg = await asyncio.wait_for(websocket_client.receive_json(), 2) assert msg["id"] == 7 assert msg["type"] == "event"