From 608d974585c696253ac629f3c7bfc3a0043cbd49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Agn=C3=A8s=20Toulet?= <35176601+AgnesToulet@users.noreply.github.com> Date: Mon, 24 Feb 2025 15:43:06 +0100 Subject: [PATCH] Rendering: Stop preloading apps for rendering requests (#100221) * Rendering: stop preloading apps * add feature toggle * add comment * add const * fix linter * rename feature toggle * delete old ff * update toggles_gen.json --- .../grafana-data/src/types/featureToggles.gen.ts | 1 + pkg/services/featuremgmt/registry.go | 9 +++++++++ pkg/services/featuremgmt/toggles_gen.csv | 1 + pkg/services/featuremgmt/toggles_gen.go | 4 ++++ pkg/services/featuremgmt/toggles_gen.json | 15 +++++++++++++++ public/app/app.ts | 5 ++++- 6 files changed, 34 insertions(+), 1 deletion(-) diff --git a/packages/grafana-data/src/types/featureToggles.gen.ts b/packages/grafana-data/src/types/featureToggles.gen.ts index 84091bf6c14..cda45576882 100644 --- a/packages/grafana-data/src/types/featureToggles.gen.ts +++ b/packages/grafana-data/src/types/featureToggles.gen.ts @@ -256,4 +256,5 @@ export interface FeatureToggles { alertingJiraIntegration?: boolean; alertingRuleVersionHistoryRestore?: boolean; newShareReportDrawer?: boolean; + rendererDisableAppPluginsPreload?: boolean; } diff --git a/pkg/services/featuremgmt/registry.go b/pkg/services/featuremgmt/registry.go index a612113f87a..6ea80687ab7 100644 --- a/pkg/services/featuremgmt/registry.go +++ b/pkg/services/featuremgmt/registry.go @@ -1789,6 +1789,15 @@ var ( HideFromAdminPage: true, HideFromDocs: true, }, + { + Name: "rendererDisableAppPluginsPreload", + Description: "Disable pre-loading app plugins when the request is coming from the renderer", + Stage: FeatureStageExperimental, + Owner: grafanaSharingSquad, + HideFromAdminPage: true, + HideFromDocs: true, + FrontendOnly: true, + }, } ) diff --git a/pkg/services/featuremgmt/toggles_gen.csv b/pkg/services/featuremgmt/toggles_gen.csv index 159071fd378..1a74645d2a3 100644 --- a/pkg/services/featuremgmt/toggles_gen.csv +++ b/pkg/services/featuremgmt/toggles_gen.csv @@ -237,3 +237,4 @@ pluginsCDNSyncLoader,experimental,@grafana/plugins-platform-backend,false,false, alertingJiraIntegration,experimental,@grafana/alerting-squad,false,false,true alertingRuleVersionHistoryRestore,experimental,@grafana/alerting-squad,false,false,true newShareReportDrawer,experimental,@grafana/sharing-squad,false,false,false +rendererDisableAppPluginsPreload,experimental,@grafana/sharing-squad,false,false,true diff --git a/pkg/services/featuremgmt/toggles_gen.go b/pkg/services/featuremgmt/toggles_gen.go index 79eaf5a3a11..043d9446a3a 100644 --- a/pkg/services/featuremgmt/toggles_gen.go +++ b/pkg/services/featuremgmt/toggles_gen.go @@ -958,4 +958,8 @@ const ( // FlagNewShareReportDrawer // Enables the report creation drawer in a dashboard FlagNewShareReportDrawer = "newShareReportDrawer" + + // FlagRendererDisableAppPluginsPreload + // Disable pre-loading app plugins when the request is coming from the renderer + FlagRendererDisableAppPluginsPreload = "rendererDisableAppPluginsPreload" ) diff --git a/pkg/services/featuremgmt/toggles_gen.json b/pkg/services/featuremgmt/toggles_gen.json index bf878a38563..67a16387684 100644 --- a/pkg/services/featuremgmt/toggles_gen.json +++ b/pkg/services/featuremgmt/toggles_gen.json @@ -3593,6 +3593,21 @@ "hideFromAdminPage": true } }, + { + "metadata": { + "name": "rendererDisableAppPluginsPreload", + "resourceVersion": "1740386710764", + "creationTimestamp": "2025-02-24T08:45:10Z" + }, + "spec": { + "description": "Disable pre-loading app plugins when the request is coming from the renderer", + "stage": "experimental", + "codeowner": "@grafana/sharing-squad", + "frontend": true, + "hideFromAdminPage": true, + "hideFromDocs": true + } + }, { "metadata": { "name": "reportingRetries", diff --git a/public/app/app.ts b/public/app/app.ts index 697e909fc37..7a3ba0bf140 100644 --- a/public/app/app.ts +++ b/public/app/app.ts @@ -205,7 +205,10 @@ export class GrafanaApp { setDataSourceSrv(dataSourceSrv); initWindowRuntime(); - if (contextSrv.user.orgRole !== '') { + // Do not pre-load apps if rendererDisableAppPluginsPreload is true and the request comes from the image renderer + const skipAppPluginsPreload = + config.featureToggles.rendererDisableAppPluginsPreload && contextSrv.user.authenticatedBy === 'render'; + if (contextSrv.user.orgRole !== '' && !skipAppPluginsPreload) { const appPluginsToAwait = getAppPluginsToAwait(); const appPluginsToPreload = getAppPluginsToPreload();