From 528032fb36c9f185b359e72402ab120fbb51e38d Mon Sep 17 00:00:00 2001 From: Stefan Agner Date: Thu, 7 Aug 2025 09:39:35 +0200 Subject: [PATCH] Avoid race condition on add-on installation (#6075) The JobGroup concurrency decorator of the Addon class does not prevent concurrent installation since the AddonManager creates a separate object for each installation. Make sure only one add-on installation is running at a time by using the JobGroup decorator on the AddonManager install method instead. --- supervisor/addons/manager.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/supervisor/addons/manager.py b/supervisor/addons/manager.py index c36050117..00fe1d620 100644 --- a/supervisor/addons/manager.py +++ b/supervisor/addons/manager.py @@ -9,6 +9,8 @@ from typing import Self, Union from attr import evolve +from supervisor.jobs.const import JobConcurrency + from ..const import AddonBoot, AddonStartup, AddonState from ..coresys import CoreSys, CoreSysAttributes from ..exceptions import ( @@ -180,6 +182,7 @@ class AddonManager(CoreSysAttributes): name="addon_manager_install", conditions=ADDON_UPDATE_CONDITIONS, on_condition=AddonsJobError, + concurrency=JobConcurrency.QUEUE, ) async def install(self, slug: str) -> None: """Install an add-on."""