This is an automated email from the ASF dual-hosted git repository.

michaelsmolina pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git


The following commit(s) were added to refs/heads/master by this push:
     new 974bee14c3e fix(extensions): make LOCAL_EXTENSIONS loading resilient 
to individual failures (#38217)
974bee14c3e is described below

commit 974bee14c3ec7e090a8053cb88811f173c19cb92
Author: Michael S. Molina <[email protected]>
AuthorDate: Tue Feb 24 13:17:27 2026 -0300

    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"):

Reply via email to