mirror of
https://github.com/home-assistant/core.git
synced 2025-07-25 22:27:07 +00:00
Run registry cleanup listeners immediately (#113646)
This commit is contained in:
parent
091199d24a
commit
93497dde8b
@ -1191,6 +1191,7 @@ def async_setup_cleanup(hass: HomeAssistant, dev_reg: DeviceRegistry) -> None:
|
|||||||
entity_registry.EVENT_ENTITY_REGISTRY_UPDATED,
|
entity_registry.EVENT_ENTITY_REGISTRY_UPDATED,
|
||||||
_async_entity_registry_changed,
|
_async_entity_registry_changed,
|
||||||
event_filter=entity_registry_changed_filter,
|
event_filter=entity_registry_changed_filter,
|
||||||
|
run_immediately=True,
|
||||||
)
|
)
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -1200,10 +1201,13 @@ def async_setup_cleanup(hass: HomeAssistant, dev_reg: DeviceRegistry) -> None:
|
|||||||
entity_registry.EVENT_ENTITY_REGISTRY_UPDATED,
|
entity_registry.EVENT_ENTITY_REGISTRY_UPDATED,
|
||||||
_async_entity_registry_changed,
|
_async_entity_registry_changed,
|
||||||
event_filter=entity_registry_changed_filter,
|
event_filter=entity_registry_changed_filter,
|
||||||
|
run_immediately=True,
|
||||||
)
|
)
|
||||||
await debounced_cleanup.async_call()
|
await debounced_cleanup.async_call()
|
||||||
|
|
||||||
hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STARTED, startup_clean)
|
hass.bus.async_listen_once(
|
||||||
|
EVENT_HOMEASSISTANT_STARTED, startup_clean, run_immediately=True
|
||||||
|
)
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def _on_homeassistant_stop(event: Event) -> None:
|
def _on_homeassistant_stop(event: Event) -> None:
|
||||||
|
@ -1476,7 +1476,9 @@ def _async_setup_cleanup(hass: HomeAssistant, registry: EntityRegistry) -> None:
|
|||||||
"""Cancel cleanup."""
|
"""Cancel cleanup."""
|
||||||
cancel()
|
cancel()
|
||||||
|
|
||||||
hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, _on_homeassistant_stop)
|
hass.bus.async_listen_once(
|
||||||
|
EVENT_HOMEASSISTANT_STOP, _on_homeassistant_stop, run_immediately=True
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
@ -1502,6 +1504,7 @@ def _async_setup_entity_restore(hass: HomeAssistant, registry: EntityRegistry) -
|
|||||||
EVENT_ENTITY_REGISTRY_UPDATED,
|
EVENT_ENTITY_REGISTRY_UPDATED,
|
||||||
cleanup_restored_states,
|
cleanup_restored_states,
|
||||||
event_filter=cleanup_restored_states_filter,
|
event_filter=cleanup_restored_states_filter,
|
||||||
|
run_immediately=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
if hass.is_running:
|
if hass.is_running:
|
||||||
|
@ -266,9 +266,8 @@ async def test_setup_entry_no_options(
|
|||||||
domain_data_mock.async_release_event_notifier.assert_awaited_once()
|
domain_data_mock.async_release_event_notifier.assert_awaited_once()
|
||||||
dmr_device_mock.async_unsubscribe_services.assert_awaited_once()
|
dmr_device_mock.async_unsubscribe_services.assert_awaited_once()
|
||||||
assert dmr_device_mock.on_event is None
|
assert dmr_device_mock.on_event is None
|
||||||
mock_state = hass.states.get(mock_entity_id)
|
# Entity should be removed by the cleanup
|
||||||
assert mock_state is not None
|
assert hass.states.get(mock_entity_id) is None
|
||||||
assert mock_state.state == ha_const.STATE_UNAVAILABLE
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
@ -345,9 +344,8 @@ async def test_setup_entry_with_options(
|
|||||||
domain_data_mock.async_release_event_notifier.assert_awaited_once()
|
domain_data_mock.async_release_event_notifier.assert_awaited_once()
|
||||||
dmr_device_mock.async_unsubscribe_services.assert_awaited_once()
|
dmr_device_mock.async_unsubscribe_services.assert_awaited_once()
|
||||||
assert dmr_device_mock.on_event is None
|
assert dmr_device_mock.on_event is None
|
||||||
mock_state = hass.states.get(mock_entity_id)
|
# Entity should be removed by the cleanup
|
||||||
assert mock_state is not None
|
assert hass.states.get(mock_entity_id) is None
|
||||||
assert mock_state.state == ha_const.STATE_UNAVAILABLE
|
|
||||||
|
|
||||||
|
|
||||||
async def test_setup_entry_mac_address(
|
async def test_setup_entry_mac_address(
|
||||||
@ -1384,10 +1382,8 @@ async def test_unavailable_device(
|
|||||||
# Check event notifiers are not released
|
# Check event notifiers are not released
|
||||||
domain_data_mock.async_release_event_notifier.assert_not_called()
|
domain_data_mock.async_release_event_notifier.assert_not_called()
|
||||||
|
|
||||||
# Confirm the entity is still unavailable
|
# Entity should be removed by the cleanup
|
||||||
mock_state = hass.states.get(mock_entity_id)
|
assert hass.states.get(mock_entity_id) is None
|
||||||
assert mock_state is not None
|
|
||||||
assert mock_state.state == ha_const.STATE_UNAVAILABLE
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
@ -1477,9 +1473,8 @@ async def test_become_available(
|
|||||||
domain_data_mock.async_release_event_notifier.assert_awaited_once()
|
domain_data_mock.async_release_event_notifier.assert_awaited_once()
|
||||||
dmr_device_mock.async_unsubscribe_services.assert_awaited_once()
|
dmr_device_mock.async_unsubscribe_services.assert_awaited_once()
|
||||||
assert dmr_device_mock.on_event is None
|
assert dmr_device_mock.on_event is None
|
||||||
mock_state = hass.states.get(mock_entity_id)
|
# Entity should be removed by the cleanup
|
||||||
assert mock_state is not None
|
assert hass.states.get(mock_entity_id) is None
|
||||||
assert mock_state.state == ha_const.STATE_UNAVAILABLE
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user