From 974bee14c3ec7e090a8053cb88811f173c19cb92 Mon Sep 17 00:00:00 2001 From: "Michael S. Molina" <70410625+michael-s-molina@users.noreply.github.com> Date: Tue, 24 Feb 2026 13:17:27 -0300 Subject: [PATCH] fix(extensions): make LOCAL_EXTENSIONS loading resilient to individual failures (#38217) --- superset/extensions/utils.py | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/superset/extensions/utils.py b/superset/extensions/utils.py index 1350d92c785..6449adae8e7 100644 --- a/superset/extensions/utils.py +++ b/superset/extensions/utils.py @@ -257,17 +257,20 @@ def get_extensions() -> dict[str, LoadedExtension]: # Load extensions from LOCAL_EXTENSIONS configuration (filesystem paths) for path in current_app.config["LOCAL_EXTENSIONS"]: - files = get_bundle_files_from_path(path) - # Use absolute filesystem path to dist directory for tracebacks - abs_dist_path = str((Path(path) / "dist").resolve()) - extension = get_loaded_extension(files, source_base_path=abs_dist_path) - extension_id = extension.manifest.id - extensions[extension_id] = extension - logger.info( - "Loading extension %s (ID: %s) from local filesystem", - extension.name, - extension_id, - ) + try: + files = get_bundle_files_from_path(path) + # Use absolute filesystem path to dist directory for tracebacks + abs_dist_path = str((Path(path) / "dist").resolve()) + extension = get_loaded_extension(files, source_base_path=abs_dist_path) + extension_id = extension.manifest.id + extensions[extension_id] = extension + logger.info( + "Loading extension %s (ID: %s) from local filesystem", + extension.name, + extension_id, + ) + except Exception as e: # pylint: disable=broad-except + logger.error("Failed to load extension from %s: %s", path, e) # Load extensions from discovery path (.supx files) if extensions_path := current_app.config.get("EXTENSIONS_PATH"):