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:
@@ -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())
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
@@ -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."""
|
||||
|
||||
Reference in New Issue
Block a user