From: Marcel van der Veldt Date: Tue, 16 Dec 2025 22:50:02 +0000 (+0100) Subject: Fix race condition on shutdown in Sonos X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=6c7eed51cf112dddba3ab90adba036514e4b3694;p=music-assistant-server.git Fix race condition on shutdown in Sonos --- diff --git a/music_assistant/providers/sonos/player.py b/music_assistant/providers/sonos/player.py index b0611266..1bb8345d 100644 --- a/music_assistant/providers/sonos/player.py +++ b/music_assistant/providers/sonos/player.py @@ -719,6 +719,8 @@ class SonosPlayer(Player): async def _connect(self, retry_on_fail: int = 0) -> None: """Connect to the Sonos player.""" + if self.mass.closing: + return if self._listen_task and not self._listen_task.done(): self.logger.debug("Already connected to Sonos player: %s", self.player_id) return @@ -744,7 +746,7 @@ class SonosPlayer(Player): self.logger.exception("Error in Sonos player listener: %s", err) finally: self.logger.info("Disconnected from player API") - if self.connected: + if self.connected and not self.mass.closing: # we didn't explicitly disconnect, try to reconnect # this should simply try to reconnect once and if that fails # we rely on mdns to pick it up again later @@ -758,6 +760,8 @@ class SonosPlayer(Player): def reconnect(self, delay: float = 1) -> None: """Reconnect the player.""" + if self.mass.closing: + return # use a task_id to prevent multiple reconnects task_id = f"sonos_reconnect_{self.player_id}" self.mass.call_later(delay, self._connect, delay, task_id=task_id)