From a54d45fa90d067a420242634160b782934581d95 Mon Sep 17 00:00:00 2001 From: "Grot (@grafanabot)" <43478413+grafanabot@users.noreply.github.com> Date: Tue, 8 Nov 2022 23:52:49 +0100 Subject: [PATCH] Alerting: Use hash of opts in singleflight (#58474) (#58488) (cherry picked from commit ad9ac85ee090f8bb006c5b095c0fe3ac7e1b71cd) Co-authored-by: George Robinson --- pkg/services/ngalert/image/service.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkg/services/ngalert/image/service.go b/pkg/services/ngalert/image/service.go index b9f68e87b79..23b666ead0c 100644 --- a/pkg/services/ngalert/image/service.go +++ b/pkg/services/ngalert/image/service.go @@ -2,6 +2,7 @@ package image import ( "context" + "encoding/base64" "errors" "fmt" "time" @@ -135,8 +136,8 @@ func (s *ScreenshotImageService) NewImage(ctx context.Context, r *models.AlertRu Timeout: screenshotTimeout, } - k := fmt.Sprintf("%s-%d-%s", opts.DashboardUID, opts.PanelID, opts.Theme) - result, err, _ := s.singleflight.Do(k, func() (interface{}, error) { + optsHash := base64.StdEncoding.EncodeToString(opts.Hash()) + result, err, _ := s.singleflight.Do(optsHash, func() (interface{}, error) { screenshot, err := s.limiter.Do(ctx, opts, s.screenshots.Take) if err != nil { if errors.Is(err, dashboards.ErrDashboardNotFound) {