mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
GCM: Correctly mark errors as downstream (#97196)
* Correctly mark query type error as downstream * Correctly mark Prom parsing failures as downstream errors * Rename function for clarity
This commit is contained in:
parent
3838fa5e55
commit
addbdb0545
@ -443,7 +443,7 @@ func (s *Service) buildQueryExecutors(logger log.Logger, req *backend.QueryDataR
|
|||||||
}
|
}
|
||||||
queryInterface = cmp
|
queryInterface = cmp
|
||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf("unrecognized query type %q", query.QueryType)
|
return nil, backend.DownstreamError(fmt.Errorf("unrecognized query type %q", query.QueryType))
|
||||||
}
|
}
|
||||||
|
|
||||||
cloudMonitoringQueryExecutors = append(cloudMonitoringQueryExecutors, queryInterface)
|
cloudMonitoringQueryExecutors = append(cloudMonitoringQueryExecutors, queryInterface)
|
||||||
|
@ -23,8 +23,8 @@ type Options struct {
|
|||||||
Dataplane bool
|
Dataplane bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func rspErr(e error) backend.DataResponse {
|
func rspDownstreamErr(e error) backend.DataResponse {
|
||||||
return backend.DataResponse{Error: e}
|
return backend.DataResponse{Error: e, ErrorSource: backend.ErrorSourceDownstream}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ReadPrometheusStyleResult will read results from a prometheus or loki server and return data frames
|
// ReadPrometheusStyleResult will read results from a prometheus or loki server and return data frames
|
||||||
@ -39,38 +39,38 @@ func ReadPrometheusStyleResult(jIter *jsoniter.Iterator, opt Options) backend.Da
|
|||||||
l1Fields:
|
l1Fields:
|
||||||
for l1Field, err := iter.ReadObject(); ; l1Field, err = iter.ReadObject() {
|
for l1Field, err := iter.ReadObject(); ; l1Field, err = iter.ReadObject() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
switch l1Field {
|
switch l1Field {
|
||||||
case "status":
|
case "status":
|
||||||
if status, err = iter.ReadString(); err != nil {
|
if status, err = iter.ReadString(); err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
case "data":
|
case "data":
|
||||||
rsp = readPrometheusData(iter, opt)
|
rsp = readPrometheusData(iter, opt)
|
||||||
if rsp.Error != nil {
|
if rsp.Error != nil {
|
||||||
return rsp
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
case "error":
|
case "error":
|
||||||
if promErrString, err = iter.ReadString(); err != nil {
|
if promErrString, err = iter.ReadString(); err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
case "errorType":
|
case "errorType":
|
||||||
if errorType, err = iter.ReadString(); err != nil {
|
if errorType, err = iter.ReadString(); err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
case "warnings":
|
case "warnings":
|
||||||
if warnings, err = readWarnings(iter); err != nil {
|
if warnings, err = readWarnings(iter); err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
case "":
|
case "":
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
break l1Fields
|
break l1Fields
|
||||||
|
|
||||||
@ -86,7 +86,8 @@ l1Fields:
|
|||||||
|
|
||||||
if status == "error" {
|
if status == "error" {
|
||||||
return backend.DataResponse{
|
return backend.DataResponse{
|
||||||
Error: fmt.Errorf("%s: %s", errorType, promErrString),
|
Error: fmt.Errorf("%s: %s", errorType, promErrString),
|
||||||
|
ErrorSource: backend.ErrorSourceDownstream,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -141,7 +142,7 @@ func readPrometheusData(iter *sdkjsoniter.Iterator, opt Options) backend.DataRes
|
|||||||
var rsp backend.DataResponse
|
var rsp backend.DataResponse
|
||||||
t, err := iter.WhatIsNext()
|
t, err := iter.WhatIsNext()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if t == sdkjsoniter.ArrayValue {
|
if t == sdkjsoniter.ArrayValue {
|
||||||
@ -163,27 +164,27 @@ func readPrometheusData(iter *sdkjsoniter.Iterator, opt Options) backend.DataRes
|
|||||||
l1Fields:
|
l1Fields:
|
||||||
for l1Field, err := iter.ReadObject(); ; l1Field, err = iter.ReadObject() {
|
for l1Field, err := iter.ReadObject(); ; l1Field, err = iter.ReadObject() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
switch l1Field {
|
switch l1Field {
|
||||||
case "encodingFlags":
|
case "encodingFlags":
|
||||||
for ok, err := iter.ReadArray(); ok; ok, err = iter.ReadArray() {
|
for ok, err := iter.ReadArray(); ok; ok, err = iter.ReadArray() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
encodingFlag, err := iter.ReadString()
|
encodingFlag, err := iter.ReadString()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
encodingFlags = append(encodingFlags, encodingFlag)
|
encodingFlags = append(encodingFlags, encodingFlag)
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
case "resultType":
|
case "resultType":
|
||||||
resultType, err = iter.ReadString()
|
resultType, err = iter.ReadString()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
resultTypeFound = true
|
resultTypeFound = true
|
||||||
|
|
||||||
@ -206,7 +207,7 @@ l1Fields:
|
|||||||
case "stats":
|
case "stats":
|
||||||
v, err := iter.Read()
|
v, err := iter.Read()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
rspErr(err)
|
rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
if len(rsp.Frames) > 0 {
|
if len(rsp.Frames) > 0 {
|
||||||
meta := rsp.Frames[0].Meta
|
meta := rsp.Frames[0].Meta
|
||||||
@ -221,17 +222,17 @@ l1Fields:
|
|||||||
|
|
||||||
case "":
|
case "":
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
if !resultTypeFound {
|
if !resultTypeFound {
|
||||||
return rspErr(fmt.Errorf("no resultType found"))
|
return rspDownstreamErr(fmt.Errorf("no resultType found"))
|
||||||
}
|
}
|
||||||
break l1Fields
|
break l1Fields
|
||||||
|
|
||||||
default:
|
default:
|
||||||
v, err := iter.Read()
|
v, err := iter.Read()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
logf("[data] TODO, support key: %s / %v\n", l1Field, v)
|
logf("[data] TODO, support key: %s / %v\n", l1Field, v)
|
||||||
}
|
}
|
||||||
@ -269,7 +270,7 @@ func readResult(resultType string, rsp backend.DataResponse, iter *sdkjsoniter.I
|
|||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
if err := iter.Skip(); err != nil {
|
if err := iter.Skip(); err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
rsp = backend.DataResponse{
|
rsp = backend.DataResponse{
|
||||||
Error: fmt.Errorf("unknown result type: %s", resultType),
|
Error: fmt.Errorf("unknown result type: %s", resultType),
|
||||||
@ -289,19 +290,19 @@ func readArrayData(iter *sdkjsoniter.Iterator) backend.DataResponse {
|
|||||||
stringField.Name = "Value"
|
stringField.Name = "Value"
|
||||||
for more, err := iter.ReadArray(); more; more, err = iter.ReadArray() {
|
for more, err := iter.ReadArray(); more; more, err = iter.ReadArray() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
rspErr(err)
|
rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
next, err := iter.WhatIsNext()
|
next, err := iter.WhatIsNext()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
switch next {
|
switch next {
|
||||||
case sdkjsoniter.StringValue:
|
case sdkjsoniter.StringValue:
|
||||||
s, err := iter.ReadString()
|
s, err := iter.ReadString()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
stringField.Append(s)
|
stringField.Append(s)
|
||||||
|
|
||||||
@ -309,7 +310,7 @@ func readArrayData(iter *sdkjsoniter.Iterator) backend.DataResponse {
|
|||||||
case sdkjsoniter.ObjectValue:
|
case sdkjsoniter.ObjectValue:
|
||||||
exemplar, labelPairs, err := readLabelsOrExemplars(iter)
|
exemplar, labelPairs, err := readLabelsOrExemplars(iter)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
rspErr(err)
|
rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
if exemplar != nil {
|
if exemplar != nil {
|
||||||
rsp.Frames = append(rsp.Frames, exemplar)
|
rsp.Frames = append(rsp.Frames, exemplar)
|
||||||
@ -349,7 +350,7 @@ func readArrayData(iter *sdkjsoniter.Iterator) backend.DataResponse {
|
|||||||
{
|
{
|
||||||
ext, err := iter.ReadAny()
|
ext, err := iter.ReadAny()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
rspErr(err)
|
rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
v := fmt.Sprintf("%v", ext)
|
v := fmt.Sprintf("%v", ext)
|
||||||
stringField.Append(v)
|
stringField.Append(v)
|
||||||
@ -505,25 +506,25 @@ func readString(iter *sdkjsoniter.Iterator) backend.DataResponse {
|
|||||||
|
|
||||||
_, err := iter.ReadArray()
|
_, err := iter.ReadArray()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var t float64
|
var t float64
|
||||||
if t, err = iter.ReadFloat64(); err != nil {
|
if t, err = iter.ReadFloat64(); err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err = iter.ReadArray(); err != nil {
|
if _, err = iter.ReadArray(); err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var v string
|
var v string
|
||||||
if v, err = iter.ReadString(); err != nil {
|
if v, err = iter.ReadString(); err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err = iter.ReadArray(); err != nil {
|
if _, err = iter.ReadArray(); err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
tt := timeFromFloat(t)
|
tt := timeFromFloat(t)
|
||||||
@ -578,7 +579,7 @@ func readMatrixOrVectorMulti(iter *sdkjsoniter.Iterator, resultType string, opt
|
|||||||
|
|
||||||
for more, err := iter.ReadArray(); more; more, err = iter.ReadArray() {
|
for more, err := iter.ReadArray(); more; more, err = iter.ReadArray() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
timeField := data.NewFieldFromFieldType(data.FieldTypeTime, 0)
|
timeField := data.NewFieldFromFieldType(data.FieldTypeTime, 0)
|
||||||
timeField.Name = data.TimeSeriesTimeFieldName
|
timeField.Name = data.TimeSeriesTimeFieldName
|
||||||
@ -590,18 +591,18 @@ func readMatrixOrVectorMulti(iter *sdkjsoniter.Iterator, resultType string, opt
|
|||||||
|
|
||||||
for l1Field, err := iter.ReadObject(); l1Field != ""; l1Field, err = iter.ReadObject() {
|
for l1Field, err := iter.ReadObject(); l1Field != ""; l1Field, err = iter.ReadObject() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
switch l1Field {
|
switch l1Field {
|
||||||
case "metric":
|
case "metric":
|
||||||
if err = iter.ReadVal(&valueField.Labels); err != nil {
|
if err = iter.ReadVal(&valueField.Labels); err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
case "value":
|
case "value":
|
||||||
t, v, err := readTimeValuePair(iter)
|
t, v, err := readTimeValuePair(iter)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
timeField.Append(t)
|
timeField.Append(t)
|
||||||
valueField.Append(v)
|
valueField.Append(v)
|
||||||
@ -610,11 +611,11 @@ func readMatrixOrVectorMulti(iter *sdkjsoniter.Iterator, resultType string, opt
|
|||||||
case "values":
|
case "values":
|
||||||
for more, err := iter.ReadArray(); more; more, err = iter.ReadArray() {
|
for more, err := iter.ReadArray(); more; more, err = iter.ReadArray() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
t, v, err := readTimeValuePair(iter)
|
t, v, err := readTimeValuePair(iter)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
timeField.Append(t)
|
timeField.Append(t)
|
||||||
valueField.Append(v)
|
valueField.Append(v)
|
||||||
@ -626,7 +627,7 @@ func readMatrixOrVectorMulti(iter *sdkjsoniter.Iterator, resultType string, opt
|
|||||||
}
|
}
|
||||||
err = readHistogram(iter, histogram)
|
err = readHistogram(iter, histogram)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
case "histograms":
|
case "histograms":
|
||||||
@ -635,16 +636,16 @@ func readMatrixOrVectorMulti(iter *sdkjsoniter.Iterator, resultType string, opt
|
|||||||
}
|
}
|
||||||
for more, err := iter.ReadArray(); more; more, err = iter.ReadArray() {
|
for more, err := iter.ReadArray(); more; more, err = iter.ReadArray() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
if err = readHistogram(iter, histogram); err != nil {
|
if err = readHistogram(iter, histogram); err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if err = iter.Skip(); err != nil {
|
if err = iter.Skip(); err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
logf("readMatrixOrVector: %s\n", l1Field)
|
logf("readMatrixOrVector: %s\n", l1Field)
|
||||||
}
|
}
|
||||||
@ -874,13 +875,13 @@ func readStream(iter *sdkjsoniter.Iterator) backend.DataResponse {
|
|||||||
|
|
||||||
for more, err := iter.ReadArray(); more; more, err = iter.ReadArray() {
|
for more, err := iter.ReadArray(); more; more, err = iter.ReadArray() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
rspErr(err)
|
rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
l1Fields:
|
l1Fields:
|
||||||
for l1Field, err := iter.ReadObject(); ; l1Field, err = iter.ReadObject() {
|
for l1Field, err := iter.ReadObject(); ; l1Field, err = iter.ReadObject() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
switch l1Field {
|
switch l1Field {
|
||||||
case "stream":
|
case "stream":
|
||||||
@ -888,11 +889,11 @@ func readStream(iter *sdkjsoniter.Iterator) backend.DataResponse {
|
|||||||
// only appends to it
|
// only appends to it
|
||||||
labels := data.Labels{}
|
labels := data.Labels{}
|
||||||
if err = iter.ReadVal(&labels); err != nil {
|
if err = iter.ReadVal(&labels); err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if labelJson, err = labelsToRawJson(labels); err != nil {
|
if labelJson, err = labelsToRawJson(labels); err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
case "values":
|
case "values":
|
||||||
@ -903,30 +904,30 @@ func readStream(iter *sdkjsoniter.Iterator) backend.DataResponse {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if _, err = iter.ReadArray(); err != nil {
|
if _, err = iter.ReadArray(); err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
ts, err := iter.ReadString()
|
ts, err := iter.ReadString()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err = iter.ReadArray(); err != nil {
|
if _, err = iter.ReadArray(); err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
line, err := iter.ReadString()
|
line, err := iter.ReadString()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err = iter.ReadArray(); err != nil {
|
if _, err = iter.ReadArray(); err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
t, err := timeFromLokiString(ts)
|
t, err := timeFromLokiString(ts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
labelsField.Append(labelJson)
|
labelsField.Append(labelJson)
|
||||||
@ -936,7 +937,7 @@ func readStream(iter *sdkjsoniter.Iterator) backend.DataResponse {
|
|||||||
}
|
}
|
||||||
case "":
|
case "":
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
break l1Fields
|
break l1Fields
|
||||||
}
|
}
|
||||||
@ -973,13 +974,13 @@ func readCategorizedStream(iter *sdkjsoniter.Iterator) backend.DataResponse {
|
|||||||
|
|
||||||
for more, err := iter.ReadArray(); more; more, err = iter.ReadArray() {
|
for more, err := iter.ReadArray(); more; more, err = iter.ReadArray() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
rspErr(err)
|
rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
l1Fields:
|
l1Fields:
|
||||||
for l1Field, err := iter.ReadObject(); ; l1Field, err = iter.ReadObject() {
|
for l1Field, err := iter.ReadObject(); ; l1Field, err = iter.ReadObject() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
switch l1Field {
|
switch l1Field {
|
||||||
case "stream":
|
case "stream":
|
||||||
@ -987,7 +988,7 @@ func readCategorizedStream(iter *sdkjsoniter.Iterator) backend.DataResponse {
|
|||||||
// only appends to it
|
// only appends to it
|
||||||
indexedLabels = data.Labels{}
|
indexedLabels = data.Labels{}
|
||||||
if err = iter.ReadVal(&indexedLabels); err != nil {
|
if err = iter.ReadVal(&indexedLabels); err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
case "values":
|
case "values":
|
||||||
@ -998,39 +999,39 @@ func readCategorizedStream(iter *sdkjsoniter.Iterator) backend.DataResponse {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if _, err = iter.ReadArray(); err != nil {
|
if _, err = iter.ReadArray(); err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
ts, err := iter.ReadString()
|
ts, err := iter.ReadString()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err = iter.ReadArray(); err != nil {
|
if _, err = iter.ReadArray(); err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
line, err := iter.ReadString()
|
line, err := iter.ReadString()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err = iter.ReadArray(); err != nil {
|
if _, err = iter.ReadArray(); err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
parsedLabelsMap, structuredMetadataMap, err := readCategorizedStreamField(iter)
|
parsedLabelsMap, structuredMetadataMap, err := readCategorizedStreamField(iter)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err = iter.ReadArray(); err != nil {
|
if _, err = iter.ReadArray(); err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
t, err := timeFromLokiString(ts)
|
t, err := timeFromLokiString(ts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
typeMap := data.Labels{}
|
typeMap := data.Labels{}
|
||||||
@ -1054,12 +1055,12 @@ func readCategorizedStream(iter *sdkjsoniter.Iterator) backend.DataResponse {
|
|||||||
|
|
||||||
labelJson, err := labelsToRawJson(clonedLabels)
|
labelJson, err := labelsToRawJson(clonedLabels)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
labelTypesJson, err := labelsToRawJson(typeMap)
|
labelTypesJson, err := labelsToRawJson(typeMap)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
labelsField.Append(labelJson)
|
labelsField.Append(labelJson)
|
||||||
@ -1070,7 +1071,7 @@ func readCategorizedStream(iter *sdkjsoniter.Iterator) backend.DataResponse {
|
|||||||
}
|
}
|
||||||
case "":
|
case "":
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rspErr(err)
|
return rspDownstreamErr(err)
|
||||||
}
|
}
|
||||||
break l1Fields
|
break l1Fields
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user