diff --git a/homeassistant/components/recorder/core.py b/homeassistant/components/recorder/core.py index 30ece9e98a5..8706bc1c7a8 100644 --- a/homeassistant/components/recorder/core.py +++ b/homeassistant/components/recorder/core.py @@ -615,6 +615,10 @@ class Recorder(threading.Thread): self.hass.add_job(self.async_set_db_ready) + # Catch up with missed statistics + with session_scope(session=self.get_session()) as session: + self._schedule_compile_missing_statistics(session) + _LOGGER.debug("Recorder processing the queue") self.hass.add_job(self._async_set_recorder_ready_migration_done) self._run_event_loop() @@ -1118,7 +1122,6 @@ class Recorder(threading.Thread): with session_scope(session=self.get_session()) as session: end_incomplete_runs(session, self.run_history.recording_start) self.run_history.start(session) - self._schedule_compile_missing_statistics(session) self._open_event_session() diff --git a/tests/components/recorder/test_init.py b/tests/components/recorder/test_init.py index 0c3a41ab8ef..05ae1f1a372 100644 --- a/tests/components/recorder/test_init.py +++ b/tests/components/recorder/test_init.py @@ -1272,6 +1272,7 @@ async def test_database_corruption_while_running(hass, tmpdir, caplog): sqlite3_exception = DatabaseError("statement", {}, []) sqlite3_exception.__cause__ = sqlite3.DatabaseError() + await async_wait_recording_done(hass) with patch.object( get_instance(hass).event_session, "close", diff --git a/tests/components/recorder/test_migrate.py b/tests/components/recorder/test_migrate.py index bbac01bb5d3..c5b4774ab34 100644 --- a/tests/components/recorder/test_migrate.py +++ b/tests/components/recorder/test_migrate.py @@ -336,6 +336,8 @@ async def test_schema_migrate(hass, start_version, live): ), patch( "homeassistant.components.recorder.migration._apply_update", wraps=_instrument_apply_update, + ), patch( + "homeassistant.components.recorder.Recorder._schedule_compile_missing_statistics", ): recorder_helper.async_initialize_recorder(hass) hass.async_create_task(