From 95afb3a1125db785721f56135179a25d7507c999 Mon Sep 17 00:00:00 2001 From: Giuseppe Guerra Date: Fri, 11 Oct 2024 12:33:18 +0200 Subject: [PATCH] Plugins: Track SystemJS load errors with Faro (#94465) * Test SRI check errors with Faro * Plugins: Send SystemJS import errors to Faro * unbork * track loadingStrategy * Revert "unbork" This reverts commit 02a61f4046772032c3391b497668147dd0039b0a. * Reapply "unbork" This reverts commit eaee8fbb39ae0a34766d4390f8bb1c53ad85ba3c. --- public/app/features/plugins/plugin_loader.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/public/app/features/plugins/plugin_loader.ts b/public/app/features/plugins/plugin_loader.ts index 3fa1f3bf98d..6d7ace4e8ca 100644 --- a/public/app/features/plugins/plugin_loader.ts +++ b/public/app/features/plugins/plugin_loader.ts @@ -23,6 +23,7 @@ import { SystemJSWithLoaderHooks } from './loader/types'; import { buildImportMap, resolveModulePath } from './loader/utils'; import { importPluginModuleInSandbox } from './sandbox/sandbox_plugin_loader'; import { isFrontendSandboxSupported } from './sandbox/utils'; +import { pluginsLogger } from './utils'; const imports = buildImportMap(sharedDependenciesMap); @@ -118,7 +119,19 @@ export async function importPluginModule({ return importPluginModuleInSandbox({ pluginId }); } - return SystemJS.import(modulePath); + return SystemJS.import(modulePath).catch((e) => { + let error = new Error('Could not load plugin: ' + e); + console.error(error); + pluginsLogger.logError(error, { + path, + pluginId, + pluginVersion: version ?? '', + expectedHash: moduleHash ?? '', + loadingStrategy: loadingStrategy.toString(), + sriChecksEnabled: (config.featureToggles.pluginsSriChecks ?? false).toString(), + }); + throw error; + }); } export function importDataSourcePlugin(meta: DataSourcePluginMeta): Promise {