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