From 178e882aa6e8c143abe0f8c42d2a34f421fed052 Mon Sep 17 00:00:00 2001 From: Aleksandar Petrov <8142643+aleks-p@users.noreply.github.com> Date: Fri, 15 Dec 2023 04:24:00 -0400 Subject: [PATCH] Fix query split logic for LabelNames, LabelValues and ProfileTypes (#2852) --- pkg/querier/querier.go | 42 ++++++++++++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/pkg/querier/querier.go b/pkg/querier/querier.go index aa1cdd4ff8..334d51e082 100644 --- a/pkg/querier/querier.go +++ b/pkg/querier/querier.go @@ -155,10 +155,7 @@ func (q *Querier) ProfileTypes(ctx context.Context, req *connect.Request[querier if storeQueries.ingester.shouldQuery { group.Go(func() error { - ir, err := q.profileTypesFromIngesters(ctx, &ingestv1.ProfileTypesRequest{ - Start: req.Msg.Start, - End: req.Msg.End, - }) + ir, err := q.profileTypesFromIngesters(ctx, storeQueries.ingester.ProfileTypesRequest(req.Msg)) if err != nil { return err } @@ -172,10 +169,7 @@ func (q *Querier) ProfileTypes(ctx context.Context, req *connect.Request[querier if storeQueries.storeGateway.shouldQuery { group.Go(func() error { - ir, err := q.profileTypesFromStoreGateway(ctx, &ingestv1.ProfileTypesRequest{ - Start: req.Msg.Start, - End: req.Msg.End, - }) + ir, err := q.profileTypesFromStoreGateway(ctx, storeQueries.storeGateway.ProfileTypesRequest(req.Msg)) if err != nil { return err } @@ -232,7 +226,7 @@ func (q *Querier) LabelValues(ctx context.Context, req *connect.Request[typesv1. if storeQueries.ingester.shouldQuery { group.Go(func() error { - ir, err := q.labelValuesFromIngesters(ctx, req.Msg) + ir, err := q.labelValuesFromIngesters(ctx, storeQueries.ingester.LabelValuesRequest(req.Msg)) if err != nil { return err } @@ -246,7 +240,7 @@ func (q *Querier) LabelValues(ctx context.Context, req *connect.Request[typesv1. if storeQueries.storeGateway.shouldQuery { group.Go(func() error { - ir, err := q.labelValuesFromStoreGateway(ctx, req.Msg) + ir, err := q.labelValuesFromStoreGateway(ctx, storeQueries.storeGateway.LabelValuesRequest(req.Msg)) if err != nil { return err } @@ -302,7 +296,7 @@ func (q *Querier) LabelNames(ctx context.Context, req *connect.Request[typesv1.L if storeQueries.ingester.shouldQuery { group.Go(func() error { - ir, err := q.labelNamesFromIngesters(ctx, req.Msg) + ir, err := q.labelNamesFromIngesters(ctx, storeQueries.ingester.LabelNamesRequest(req.Msg)) if err != nil { return err } @@ -316,7 +310,7 @@ func (q *Querier) LabelNames(ctx context.Context, req *connect.Request[typesv1.L if storeQueries.storeGateway.shouldQuery { group.Go(func() error { - ir, err := q.labelNamesFromStoreGateway(ctx, req.Msg) + ir, err := q.labelNamesFromStoreGateway(ctx, storeQueries.storeGateway.LabelNamesRequest(req.Msg)) if err != nil { return err } @@ -697,6 +691,30 @@ func (sq storeQuery) SeriesRequest(req *querierv1.SeriesRequest) *ingestv1.Serie } } +func (sq storeQuery) LabelNamesRequest(req *typesv1.LabelNamesRequest) *typesv1.LabelNamesRequest { + return &typesv1.LabelNamesRequest{ + Matchers: req.Matchers, + Start: int64(sq.start), + End: int64(sq.end), + } +} + +func (sq storeQuery) LabelValuesRequest(req *typesv1.LabelValuesRequest) *typesv1.LabelValuesRequest { + return &typesv1.LabelValuesRequest{ + Name: req.Name, + Matchers: req.Matchers, + Start: int64(sq.start), + End: int64(sq.end), + } +} + +func (sq storeQuery) ProfileTypesRequest(req *querierv1.ProfileTypesRequest) *ingestv1.ProfileTypesRequest { + return &ingestv1.ProfileTypesRequest{ + Start: int64(sq.start), + End: int64(sq.end), + } +} + type storeQueries struct { ingester, storeGateway storeQuery queryStoreAfter time.Duration