From db3cd8e276d37dc702e98f695ded408a332375cb Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 18 Feb 2023 00:11:35 -0500 Subject: [PATCH] Fix danglin task for util.timeout (#88366) Fix danglin task for util timeout --- homeassistant/util/timeout.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/homeassistant/util/timeout.py b/homeassistant/util/timeout.py index b9298501699..df225580dae 100644 --- a/homeassistant/util/timeout.py +++ b/homeassistant/util/timeout.py @@ -159,6 +159,7 @@ class _GlobalTaskContext: self._time_left: float = timeout self._expiration_time: float | None = None self._timeout_handler: asyncio.Handle | None = None + self._on_wait_task: asyncio.Task | None = None self._wait_zone: asyncio.Event = asyncio.Event() self._state: _State = _State.INIT self._cool_down: float = cool_down @@ -223,7 +224,7 @@ class _GlobalTaskContext: # Reset timer if zones are running if not self._manager.zones_done: - asyncio.create_task(self._on_wait()) + self._on_wait_task = asyncio.create_task(self._on_wait()) else: self._cancel_task() @@ -245,6 +246,7 @@ class _GlobalTaskContext: """Wait until zones are done.""" await self._wait_zone.wait() await asyncio.sleep(self._cool_down) # Allow context switch + self._on_wait_task = None if self.state != _State.TIMEOUT: return self._cancel_task()