mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 11:17:21 +00:00
Ensure storage write consume the data under the lock (#35889)
If two writes trigger at the same time the data would already be consumed.
This commit is contained in:
parent
4805723a3f
commit
6d03496372
@ -200,14 +200,19 @@ class Store:
|
||||
|
||||
async def _async_handle_write_data(self, *_args):
|
||||
"""Handle writing the config."""
|
||||
data = self._data
|
||||
|
||||
if "data_func" in data:
|
||||
data["data"] = data.pop("data_func")()
|
||||
|
||||
self._data = None
|
||||
|
||||
async with self._write_lock:
|
||||
if self._data is None:
|
||||
# Another write already consumed the data
|
||||
return
|
||||
|
||||
data = self._data
|
||||
|
||||
if "data_func" in data:
|
||||
data["data"] = data.pop("data_func")()
|
||||
|
||||
self._data = None
|
||||
|
||||
try:
|
||||
await self.hass.async_add_executor_job(
|
||||
self._write_data, self.path, data
|
||||
|
Loading…
x
Reference in New Issue
Block a user