Plugin preloading: Fix performance measurement (#86855)

fix: measuring plugin preload performance
This commit is contained in:
Levente Balogh
2024-04-24 15:37:22 +02:00
committed by GitHub
parent 5dd8353ab1
commit 17a3ec52b6
2 changed files with 8 additions and 4 deletions
+1 -1
View File
@@ -222,7 +222,7 @@ export class GrafanaApp {
const appPlugins = Object.values(config.apps).filter((app) => !awaitedAppPluginIds.includes(app.id)); const appPlugins = Object.values(config.apps).filter((app) => !awaitedAppPluginIds.includes(app.id));
preloadPlugins(appPlugins, extensionsRegistry); preloadPlugins(appPlugins, extensionsRegistry);
await preloadPlugins(awaitedAppPlugins, extensionsRegistry); await preloadPlugins(awaitedAppPlugins, extensionsRegistry, 'frontend_awaited_plugins_preload');
} }
setPluginExtensionGetter(createPluginExtensionsGetter(extensionsRegistry)); setPluginExtensionGetter(createPluginExtensionsGetter(extensionsRegistry));
@@ -12,8 +12,12 @@ export type PluginPreloadResult = {
extensionConfigs: PluginExtensionConfig[]; extensionConfigs: PluginExtensionConfig[];
}; };
export async function preloadPlugins(apps: AppPluginConfig[] = [], registry: ReactivePluginExtensionsRegistry) { export async function preloadPlugins(
startMeasure('frontend_plugins_preload'); apps: AppPluginConfig[] = [],
registry: ReactivePluginExtensionsRegistry,
eventName = 'frontend_plugins_preload'
) {
startMeasure(eventName);
const promises = apps.filter((config) => config.preload).map((config) => preload(config)); const promises = apps.filter((config) => config.preload).map((config) => preload(config));
const preloadedPlugins = await Promise.all(promises); const preloadedPlugins = await Promise.all(promises);
@@ -21,7 +25,7 @@ export async function preloadPlugins(apps: AppPluginConfig[] = [], registry: Rea
registry.register(preloadedPlugin); registry.register(preloadedPlugin);
} }
stopMeasure('frontend_plugins_preload'); stopMeasure(eventName);
} }
async function preload(config: AppPluginConfig): Promise<PluginPreloadResult> { async function preload(config: AppPluginConfig): Promise<PluginPreloadResult> {