mirror of
https://github.com/home-assistant/supervisor.git
synced 2026-04-02 08:12:47 +01:00
* Wait for addon startup task before unload to prevent data access race Replace the cancel-based approach in unload() with an await of the outer _wait_for_startup_task. The container removal and state change resolve the startup event naturally, so we just need to ensure the task completes before addon data is removed. This prevents a KeyError on self.name access when _wait_for_startup times out after data has been removed. Also simplify _wait_for_startup by removing the unnecessary inner task wrapper — asyncio.wait_for can await the event directly. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Drop asyncio.sleep() in test_manager.py * Only clear startup task reference if still the current task Prevent a race where an older _wait_for_startup task's finally block could wipe the reference to a newer task, causing unload() to skip the await. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Reuse existing pending startup wait task when addon is already running If start() is called while the addon is already running and a startup wait task is still pending, return the existing task instead of creating a new one. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>