From 43371527129d819b141b957b83d8dab485040c1b Mon Sep 17 00:00:00 2001 From: KonH Date: Tue, 18 Oct 2022 20:25:04 +0200 Subject: [PATCH] Change signature - return non-reference from ReadPrometheusStyleResult Related to https://github.com/grafana/grafana/issues/52430 --- pkg/tsdb/loki/api.go | 8 -------- pkg/tsdb/prometheus/querydata/response.go | 9 +++------ pkg/util/converter/prom.go | 6 +++--- pkg/util/converter/prom_test.go | 2 +- 4 files changed, 7 insertions(+), 18 deletions(-) diff --git a/pkg/tsdb/loki/api.go b/pkg/tsdb/loki/api.go index 553cc9bdf4d..d94ecf6b714 100644 --- a/pkg/tsdb/loki/api.go +++ b/pkg/tsdb/loki/api.go @@ -163,14 +163,6 @@ func (api *LokiAPI) DataQuery(ctx context.Context, query lokiQuery) (data.Frames iter := jsoniter.Parse(jsoniter.ConfigDefault, resp.Body, 1024) res := converter.ReadPrometheusStyleResult(iter, converter.Options{MatrixWideSeries: false, VectorWideSeries: false}) - if res == nil { - // it's hard to say if this is an error-case or not. - // we know the http-response was a success-response - // (otherwise we wouldn't be here in the code), - // so we will go with a success, with no data. - return data.Frames{}, nil - } - if res.Error != nil { return nil, res.Error } diff --git a/pkg/tsdb/prometheus/querydata/response.go b/pkg/tsdb/prometheus/querydata/response.go index 64b0ffe48fb..aecf5a11cbc 100644 --- a/pkg/tsdb/prometheus/querydata/response.go +++ b/pkg/tsdb/prometheus/querydata/response.go @@ -27,9 +27,6 @@ func (s *QueryData) parseResponse(ctx context.Context, q *models.Query, res *htt MatrixWideSeries: s.enableWideSeries, VectorWideSeries: s.enableWideSeries, }) - if r == nil { - return nil, fmt.Errorf("received empty response from prometheus") - } // The ExecutedQueryString can be viewed in QueryInspector in UI for _, frame := range r.Frames { @@ -41,7 +38,7 @@ func (s *QueryData) parseResponse(ctx context.Context, q *models.Query, res *htt } r = processExemplars(q, r) - return r, nil + return &r, nil } func addMetadataToMultiFrame(q *models.Query, frame *data.Frame) { @@ -135,7 +132,7 @@ func getName(q *models.Query, field *data.Field) string { return legend } -func processExemplars(q *models.Query, dr *backend.DataResponse) *backend.DataResponse { +func processExemplars(q *models.Query, dr backend.DataResponse) backend.DataResponse { sampler := newExemplarSampler() // we are moving from a multi-frame response returned @@ -203,7 +200,7 @@ func processExemplars(q *models.Query, dr *backend.DataResponse) *backend.DataRe frames = append(frames, exemplarFrame) - return &backend.DataResponse{ + return backend.DataResponse{ Frames: frames, Error: dr.Error, } diff --git a/pkg/util/converter/prom.go b/pkg/util/converter/prom.go index 5a51b33f2f1..ca6377885dc 100644 --- a/pkg/util/converter/prom.go +++ b/pkg/util/converter/prom.go @@ -24,7 +24,7 @@ type Options struct { } // ReadPrometheusStyleResult will read results from a prometheus or loki server and return data frames -func ReadPrometheusStyleResult(iter *jsoniter.Iterator, opt Options) *backend.DataResponse { +func ReadPrometheusStyleResult(iter *jsoniter.Iterator, opt Options) backend.DataResponse { var rsp *backend.DataResponse status := "unknown" errorType := "" @@ -55,7 +55,7 @@ func ReadPrometheusStyleResult(iter *jsoniter.Iterator, opt Options) *backend.Da } if status == "error" { - return &backend.DataResponse{ + return backend.DataResponse{ Error: fmt.Errorf("%s: %s", errorType, err), } } @@ -69,7 +69,7 @@ func ReadPrometheusStyleResult(iter *jsoniter.Iterator, opt Options) *backend.Da } } - return rsp + return *rsp } func readWarnings(iter *jsoniter.Iterator) []data.Notice { diff --git a/pkg/util/converter/prom_test.go b/pkg/util/converter/prom_test.go index 97620675d6a..29649c6a68c 100644 --- a/pkg/util/converter/prom_test.go +++ b/pkg/util/converter/prom_test.go @@ -68,7 +68,7 @@ func runScenario(name string, opts Options) func(t *testing.T) { } fname := name + "-frame" - experimental.CheckGoldenJSONResponse(t, "testdata", fname, rsp, update) + experimental.CheckGoldenJSONResponse(t, "testdata", fname, &rsp, update) } }