Fix graceful shutdown when provider errors on unload
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Mon, 4 Dec 2023 08:37:20 +0000 (09:37 +0100)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Mon, 4 Dec 2023 08:37:20 +0000 (09:37 +0100)
music_assistant/server/server.py

index e6b8c7d4137a1c21fcfa62a4e106da399525da55..9af1238ff85f8d16f980e46732e820f45ef636a2 100644 (file)
@@ -429,9 +429,13 @@ class MusicAssistant:
             for dep_prov in self.providers:
                 if dep_prov.manifest.depends_on == provider.domain:
                     await self.unload_provider(dep_prov.instance_id)
-            await provider.unload()
-            self._providers.pop(instance_id, None)
-            self.signal_event(EventType.PROVIDERS_UPDATED, data=self.get_providers())
+            try:
+                await provider.unload()
+            except Exception as err:
+                LOGGER.warning("Error while unload provider %s: %s", provider.name, str(err))
+            finally:
+                self._providers.pop(instance_id, None)
+                self.signal_event(EventType.PROVIDERS_UPDATED, data=self.get_providers())
 
     def _register_api_commands(self) -> None:
         """Register all methods decorated as api_command within a class(instance)."""