RFC - Add a 3rd state to the HA shutdown sequence for writing… (#33358)
* add third stage to hass shutdown * use 3rd stage in storage * update core state * add writing data to multi stop ignore * update core test * review comment * update name based on feedback
This commit is contained in:
parent
01bf4daf37
commit
bcd1eb952c
6 changed files with 27 additions and 8 deletions
|
@ -47,6 +47,7 @@ from homeassistant.const import (
|
|||
EVENT_CALL_SERVICE,
|
||||
EVENT_CORE_CONFIG_UPDATE,
|
||||
EVENT_HOMEASSISTANT_CLOSE,
|
||||
EVENT_HOMEASSISTANT_FINAL_WRITE,
|
||||
EVENT_HOMEASSISTANT_START,
|
||||
EVENT_HOMEASSISTANT_STOP,
|
||||
EVENT_SERVICE_REGISTERED,
|
||||
|
@ -151,6 +152,7 @@ class CoreState(enum.Enum):
|
|||
starting = "STARTING"
|
||||
running = "RUNNING"
|
||||
stopping = "STOPPING"
|
||||
writing_data = "WRITING_DATA"
|
||||
|
||||
def __str__(self) -> str:
|
||||
"""Return the event."""
|
||||
|
@ -412,7 +414,7 @@ class HomeAssistant:
|
|||
# regardless of the state of the loop.
|
||||
if self.state == CoreState.not_running: # just ignore
|
||||
return
|
||||
if self.state == CoreState.stopping:
|
||||
if self.state == CoreState.stopping or self.state == CoreState.writing_data:
|
||||
_LOGGER.info("async_stop called twice: ignored")
|
||||
return
|
||||
if self.state == CoreState.starting:
|
||||
|
@ -426,6 +428,11 @@ class HomeAssistant:
|
|||
await self.async_block_till_done()
|
||||
|
||||
# stage 2
|
||||
self.state = CoreState.writing_data
|
||||
self.bus.async_fire(EVENT_HOMEASSISTANT_FINAL_WRITE)
|
||||
await self.async_block_till_done()
|
||||
|
||||
# stage 3
|
||||
self.state = CoreState.not_running
|
||||
self.bus.async_fire(EVENT_HOMEASSISTANT_CLOSE)
|
||||
await self.async_block_till_done()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue