Plugin preloading: Fix performance measurement (#86855)
fix: measuring plugin preload performance
This commit is contained in:
+1
-1
@@ -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> {
|
||||||
|
|||||||
Reference in New Issue
Block a user