1
0
mirror of https://github.com/home-assistant/core.git synced 2026-02-15 07:36:16 +00:00

Save entity registry store in worker thread (#157274)

This commit is contained in:
Erik Montnemery
2025-11-26 16:03:14 +01:00
committed by GitHub
parent e3cf65510b
commit 87ea96a3e0
2 changed files with 8 additions and 4 deletions

View File

@@ -824,6 +824,7 @@ class EntityRegistry(BaseRegistry):
STORAGE_KEY,
atomic_writes=True,
minor_version=STORAGE_VERSION_MINOR,
serialize_in_event_loop=False,
)
self.hass.bus.async_listen(
EVENT_DEVICE_REGISTRY_UPDATED,
@@ -1630,13 +1631,17 @@ class EntityRegistry(BaseRegistry):
self.entities = entities
self._entities_data = entities.data
@callback
def _data_to_save(self) -> dict[str, Any]:
"""Return data of entity registry to store in a file."""
# Create intermediate lists to allow this method to be called from a thread
# other than the event loop.
return {
"entities": [entry.as_storage_fragment for entry in self.entities.values()],
"entities": [
entry.as_storage_fragment for entry in list(self.entities.values())
],
"deleted_entities": [
entry.as_storage_fragment for entry in self.deleted_entities.values()
entry.as_storage_fragment
for entry in list(self.deleted_entities.values())
],
}

View File

@@ -77,7 +77,6 @@ class BaseRegistry[_StoreDataT: Mapping[str, Any] | Sequence[Any]](ABC):
delay = SAVE_DELAY if self.hass.state is CoreState.running else SAVE_DELAY_LONG
self._store.async_delay_save(self._data_to_save, delay)
@callback
@abstractmethod
def _data_to_save(self) -> _StoreDataT:
"""Return data of registry to store in a file."""