Annotations: Optimize search by tags (#93547)

* Annotations: Optimize search on large number of dashboards

* refactor

* fix batch size

* Return early if no annotations found

* revert go.mod

* return nil in case of error

* Move default limit to the API package

* fix empty access control filter

* Set default limit to 100

* optimize query when number of annotations is less than limit

* Update pkg/services/annotations/annotationsimpl/annotations.go

Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>

* remove limit from store since it's set in API

* set default limit in Find method (do not break tests)

* Only add limit to the query if it's set

* use limit trick for all searches without dashboard filter

* set default page if not provided

---------

Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
This commit is contained in:
Alexander Zobnin
2024-09-23 17:29:29 +02:00
committed by GitHub
parent 5bc7a47ecb
commit 5e713673e1
7 changed files with 85 additions and 40 deletions

View File

@@ -22,6 +22,8 @@ import (
"github.com/grafana/grafana/pkg/web"
)
const defaultAnnotationsLimit = 100
// swagger:route GET /annotations annotations getAnnotations
//
// Find Annotations.
@@ -48,6 +50,9 @@ func (hs *HTTPServer) GetAnnotations(c *contextmodel.ReqContext) response.Respon
MatchAny: c.QueryBool("matchAny"),
SignedInUser: c.SignedInUser,
}
if query.Limit == 0 {
query.Limit = defaultAnnotationsLimit
}
// When dashboard UID present in the request, we ignore dashboard ID
if query.DashboardUID != "" {