From fe399de5c1916992cc2681be238824f4d9611e96 Mon Sep 17 00:00:00 2001 From: Ben Ye Date: Sat, 14 Jan 2023 00:18:40 -0800 Subject: [PATCH] use labels Bytes rather than String for map key Signed-off-by: Ben Ye --- pkg/distributor/query.go | 3 ++- pkg/querier/tripperware/instantquery/instant_query.go | 3 ++- pkg/querier/tripperware/merge.go | 3 ++- pkg/querier/tripperware/merge_test.go | 9 +++++---- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/pkg/distributor/query.go b/pkg/distributor/query.go index d41556e283c..2a58c4955c1 100644 --- a/pkg/distributor/query.go +++ b/pkg/distributor/query.go @@ -257,10 +257,11 @@ func (d *Distributor) queryIngestersExemplars(ctx context.Context, replicationSe func mergeExemplarQueryResponses(results []interface{}) *ingester_client.ExemplarQueryResponse { var keys []string exemplarResults := make(map[string]cortexpb.TimeSeries) + buf := make([]byte, 0, 1024) for _, result := range results { r := result.(*ingester_client.ExemplarQueryResponse) for _, ts := range r.Timeseries { - lbls := cortexpb.FromLabelAdaptersToLabels(ts.Labels).String() + lbls := string(cortexpb.FromLabelAdaptersToLabels(ts.Labels).Bytes(buf)) e, ok := exemplarResults[lbls] if !ok { exemplarResults[lbls] = ts diff --git a/pkg/querier/tripperware/instantquery/instant_query.go b/pkg/querier/tripperware/instantquery/instant_query.go index 645f9f70e42..fd1f3559db3 100644 --- a/pkg/querier/tripperware/instantquery/instant_query.go +++ b/pkg/querier/tripperware/instantquery/instant_query.go @@ -299,6 +299,7 @@ func (instantQueryCodec) MergeResponse(ctx context.Context, responses ...tripper func vectorMerge(resps []*PrometheusInstantQueryResponse) *Vector { output := map[string]*Sample{} + buf := make([]byte, 0, 1024) for _, resp := range resps { if resp == nil { continue @@ -313,7 +314,7 @@ func vectorMerge(resps []*PrometheusInstantQueryResponse) *Vector { if s == nil { continue } - metric := cortexpb.FromLabelAdaptersToLabels(sample.Labels).String() + metric := string(cortexpb.FromLabelAdaptersToLabels(sample.Labels).Bytes(buf)) if existingSample, ok := output[metric]; !ok { output[metric] = s } else if existingSample.GetSample().TimestampMs < s.GetSample().TimestampMs { diff --git a/pkg/querier/tripperware/merge.go b/pkg/querier/tripperware/merge.go index 30d811aa8ed..84dbb81afbc 100644 --- a/pkg/querier/tripperware/merge.go +++ b/pkg/querier/tripperware/merge.go @@ -8,8 +8,9 @@ import ( // MergeSampleStreams deduplicates sample streams using a map. func MergeSampleStreams(output map[string]SampleStream, sampleStreams []SampleStream) { + buf := make([]byte, 0, 1024) for _, stream := range sampleStreams { - metric := cortexpb.FromLabelAdaptersToLabels(stream.Labels).String() + metric := string(cortexpb.FromLabelAdaptersToLabels(stream.Labels).Bytes(buf)) existing, ok := output[metric] if !ok { existing = SampleStream{ diff --git a/pkg/querier/tripperware/merge_test.go b/pkg/querier/tripperware/merge_test.go index 561d47fdf94..2fa100ac244 100644 --- a/pkg/querier/tripperware/merge_test.go +++ b/pkg/querier/tripperware/merge_test.go @@ -7,6 +7,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/cortexproject/cortex/pkg/cortexpb" + ingester_client "github.com/cortexproject/cortex/pkg/ingester/client" ) func TestMergeSampleStreams(t *testing.T) { @@ -34,7 +35,7 @@ func TestMergeSampleStreams(t *testing.T) { }, }, expectedOutput: map[string]SampleStream{ - lbls.String(): { + ingester_client.LabelsToKeyString(lbls): { Labels: cortexpb.FromLabelsToLabelAdapters(lbls), Samples: []cortexpb.Sample{ {Value: 0, TimestampMs: 0}, @@ -63,7 +64,7 @@ func TestMergeSampleStreams(t *testing.T) { }, }, expectedOutput: map[string]SampleStream{ - lbls.String(): { + ingester_client.LabelsToKeyString(lbls): { Labels: cortexpb.FromLabelsToLabelAdapters(lbls), Samples: []cortexpb.Sample{ {Value: 0, TimestampMs: 0}, @@ -109,7 +110,7 @@ func TestMergeSampleStreams(t *testing.T) { }, }, expectedOutput: map[string]SampleStream{ - lbls.String(): { + ingester_client.LabelsToKeyString(lbls): { Labels: cortexpb.FromLabelsToLabelAdapters(lbls), Samples: []cortexpb.Sample{ {Value: 0, TimestampMs: 0}, @@ -118,7 +119,7 @@ func TestMergeSampleStreams(t *testing.T) { {Value: 4, TimestampMs: 4}, }, }, - lbls1.String(): { + ingester_client.LabelsToKeyString(lbls1): { Labels: cortexpb.FromLabelsToLabelAdapters(lbls1), Samples: []cortexpb.Sample{ {Value: 0, TimestampMs: 0},