diff --git a/homeassistant/components/recorder/run_history.py b/homeassistant/components/recorder/run_history.py index fb87d9a1fa2..02b2df066bd 100644 --- a/homeassistant/components/recorder/run_history.py +++ b/homeassistant/components/recorder/run_history.py @@ -64,8 +64,13 @@ class RunHistory: @property def current(self) -> RecorderRuns: """Get the current run.""" - assert self._current_run_info is not None - return self._current_run_info + # If start has not been called yet because the recorder is + # still starting up we want history to use the current time + # as the created time to ensure we can still return results + # and we do not try to pull data from the previous run. + return self._current_run_info or RecorderRuns( + start=self.recording_start, created=dt_util.utcnow() + ) def get(self, start: datetime) -> RecorderRuns | None: """Return the recorder run that started before or at start. diff --git a/tests/components/recorder/test_run_history.py b/tests/components/recorder/test_run_history.py index 7504404f779..3b5bd7dda6b 100644 --- a/tests/components/recorder/test_run_history.py +++ b/tests/components/recorder/test_run_history.py @@ -45,3 +45,14 @@ async def test_run_history(recorder_mock, hass): process_timestamp(instance.run_history.get(now).start) == instance.run_history.recording_start ) + + +async def test_run_history_during_schema_migration(recorder_mock, hass): + """Test the run history during schema migration.""" + instance = recorder.get_instance(hass) + run_history = instance.run_history + assert run_history.current.start == run_history.recording_start + with instance.get_session() as session: + run_history.start(session) + assert run_history.current.start == run_history.recording_start + assert run_history.current.created >= run_history.recording_start