mirror of
https://github.com/home-assistant/supervisor.git
synced 2026-04-02 00:07:16 +01:00
f41a8e9d082fe6a5782612a57fbb5c9f78795e7b
* 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>
Home Assistant Supervisor
First private cloud solution for home automation
Home Assistant (former Hass.io) is a container-based system for managing your Home Assistant Core installation and related applications. The system is controlled via Home Assistant which communicates with the Supervisor. The Supervisor provides an API to manage the installation. This includes changing network settings or installing and updating software.
Installation
Installation instructions can be found at https://home-assistant.io/getting-started.
Development
For small changes and bugfixes you can just follow this, but for significant changes open a RFC first. Development instructions can be found here.
Release
Releases are done in 3 stages (channels) with this structure:
- Pull requests are merged to the
mainbranch. - A new build is pushed to the
devstage. - Releases are published.
- A new build is pushed to the
betastage. - The
stable.jsonfile is updated. - The build that was pushed to
betawill now be pushed tostable.
Description
Languages
Python
95.5%
JavaScript
4.4%
