From 03d1c366372e4181e4463adbb83d73b8930772ed Mon Sep 17 00:00:00 2001 From: Broque Thomas <26755000+Nezreka@users.noreply.github.com> Date: Tue, 5 May 2026 18:42:21 -0700 Subject: [PATCH] Fallback to empty MediaServerEngine if init fails MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If MediaServerEngine init raised, ``media_server_engine`` was set to None. Every downstream caller (now that the per-server globals are gone) does ``media_server_engine.client('plex')`` style access — which would AttributeError on the None. Pre-refactor each per-server global had its own try/except so engine failure didn't take down per-server dispatch sites. Preserve that resilience by falling back to an empty MediaServerEngine — its ``client(name)`` returns None, downstream truthy checks treat that as "not configured" exactly the same way the legacy globals did. --- web_server.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/web_server.py b/web_server.py index 3ac6a69e..3c6aeb90 100644 --- a/web_server.py +++ b/web_server.py @@ -612,7 +612,17 @@ try: logger.info(" Media server engine initialized") except Exception as e: logger.error(f" Media server engine failed to initialize: {e}") - media_server_engine = None + # Fallback: empty engine so downstream `engine.client('plex')` + # returns None instead of AttributeError'ing on a None engine + # global. Pre-refactor each per-server client global was its own + # try/except so engine failure didn't take down dispatch sites; + # this preserves that resilience. + try: + from core.media_server.engine import MediaServerEngine, set_media_server_engine + media_server_engine = MediaServerEngine(clients={}) + set_media_server_engine(media_server_engine) + except Exception: + media_server_engine = None try: soulseek_client = DownloadOrchestrator()