From da3717b3150af07dcee739dfc87942a0bef92041 Mon Sep 17 00:00:00 2001 From: "grafana-delivery-bot[bot]" <132647405+grafana-delivery-bot[bot]@users.noreply.github.com> Date: Fri, 19 Sep 2025 15:29:49 -0300 Subject: [PATCH] [release-12.0.5] Page limit config for dashboards with visible annotations (#111377) * Page limit config for dashboards with visible annotations (#110911) * Page limit config for dashboards with visible annotations Signed-off-by: Maicon Costa --------- Signed-off-by: Maicon Costa (cherry picked from commit 77fa3333e4a156a953157a46c34fc4d59d286da1) * Add missing parameter to TestIntegrationAuthorize Signed-off-by: Maicon Costa --------- Signed-off-by: Maicon Costa Co-authored-by: maicon --- .../accesscontrol/accesscontrol.go | 22 ++++++++++++------- .../accesscontrol/accesscontrol_test.go | 2 +- .../annotationsimpl/annotations.go | 2 +- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/pkg/services/annotations/accesscontrol/accesscontrol.go b/pkg/services/annotations/accesscontrol/accesscontrol.go index f2e89acd23b..19eeca27b63 100644 --- a/pkg/services/annotations/accesscontrol/accesscontrol.go +++ b/pkg/services/annotations/accesscontrol/accesscontrol.go @@ -12,6 +12,7 @@ import ( "github.com/grafana/grafana/pkg/services/featuremgmt" "github.com/grafana/grafana/pkg/services/sqlstore/permissions" "github.com/grafana/grafana/pkg/services/sqlstore/searchstore" + "github.com/grafana/grafana/pkg/setting" ) var ( @@ -28,16 +29,21 @@ var ( ) type AuthService struct { - db db.DB - features featuremgmt.FeatureToggles - dashSvc dashboards.DashboardService + db db.DB + features featuremgmt.FeatureToggles + dashSvc dashboards.DashboardService + searchDashboardsPageLimit int64 } -func NewAuthService(db db.DB, features featuremgmt.FeatureToggles, dashSvc dashboards.DashboardService) *AuthService { +func NewAuthService(db db.DB, features featuremgmt.FeatureToggles, dashSvc dashboards.DashboardService, cfg *setting.Cfg) *AuthService { + section := cfg.Raw.Section("annotations") + searchDashboardsPageLimit := section.Key("search_dashboards_page_limit").MustInt64(1000) + return &AuthService{ - db: db, - features: features, - dashSvc: dashSvc, + db: db, + features: features, + dashSvc: dashSvc, + searchDashboardsPageLimit: searchDashboardsPageLimit, } } @@ -142,7 +148,7 @@ func (authz *AuthService) dashboardsWithVisibleAnnotations(ctx context.Context, SignedInUser: query.SignedInUser, Page: query.Page, Type: filterType, - Limit: 1000, + Limit: authz.searchDashboardsPageLimit, }) if err != nil { return nil, err diff --git a/pkg/services/annotations/accesscontrol/accesscontrol_test.go b/pkg/services/annotations/accesscontrol/accesscontrol_test.go index f4ec20ffcfa..45ecf740c6f 100644 --- a/pkg/services/annotations/accesscontrol/accesscontrol_test.go +++ b/pkg/services/annotations/accesscontrol/accesscontrol_test.go @@ -207,7 +207,7 @@ func TestIntegrationAuthorize(t *testing.T) { t.Run(tc.name, func(t *testing.T) { u.Permissions = map[int64]map[string][]string{1: tc.permissions} testutil.SetupRBACPermission(t, sql, role, u) - authz := NewAuthService(sql, featuremgmt.WithFeatures(tc.featureToggle), dashSvc) + authz := NewAuthService(sql, featuremgmt.WithFeatures(tc.featureToggle), dashSvc, cfg) query := annotations.ItemQuery{SignedInUser: u, OrgID: 1} resources, err := authz.Authorize(context.Background(), query) diff --git a/pkg/services/annotations/annotationsimpl/annotations.go b/pkg/services/annotations/annotationsimpl/annotations.go index 496b782be8f..b2895f64e37 100644 --- a/pkg/services/annotations/annotationsimpl/annotations.go +++ b/pkg/services/annotations/annotationsimpl/annotations.go @@ -53,7 +53,7 @@ func ProvideService( return &RepositoryImpl{ db: db, features: features, - authZ: accesscontrol.NewAuthService(db, features, dashSvc), + authZ: accesscontrol.NewAuthService(db, features, dashSvc, cfg), reader: read, writer: write, }