Skip to content

Commit 900751c

Browse files
authored
fix: report correct status code for metric and log queries in metrics.go (#12102)
1 parent a475153 commit 900751c

3 files changed

Lines changed: 9 additions & 26 deletions

File tree

‎pkg/logql/engine.go‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,6 @@ func (q *query) Exec(ctx context.Context) (logqlmodel.Result, error) {
265265
sp.LogKV(statResult.KVList()...)
266266

267267
status, _ := server.ClientHTTPStatusAndError(err)
268-
269268
if q.record {
270269
RecordRangeAndInstantQueryMetrics(ctx, q.logger, q.params, strconv.Itoa(status), statResult, data)
271270
}

‎pkg/querier/http.go‎

Lines changed: 5 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -122,11 +122,7 @@ func (q *QuerierAPI) LabelHandler(ctx context.Context, req *logproto.LabelReques
122122
sp.LogKV(statResult.KVList()...)
123123
}
124124

125-
status := 200
126-
if err != nil {
127-
status, _ = serverutil.ClientHTTPStatusAndError(err)
128-
}
129-
125+
status, _ := serverutil.ClientHTTPStatusAndError(err)
130126
logql.RecordLabelQueryMetrics(ctx, util_log.Logger, *req.Start, *req.End, req.Name, req.Query, strconv.Itoa(status), statResult)
131127

132128
return resp, err
@@ -277,11 +273,7 @@ func (q *QuerierAPI) SeriesHandler(ctx context.Context, req *logproto.SeriesRequ
277273
sp.LogKV(statResult.KVList()...)
278274
}
279275

280-
status := 200
281-
if err != nil {
282-
status, _ = serverutil.ClientHTTPStatusAndError(err)
283-
}
284-
276+
status, _ := serverutil.ClientHTTPStatusAndError(err)
285277
logql.RecordSeriesQueryMetrics(ctx, util_log.Logger, req.Start, req.End, req.Groups, strconv.Itoa(status), req.GetShards(), statResult)
286278

287279
return resp, statResult, err
@@ -308,11 +300,7 @@ func (q *QuerierAPI) IndexStatsHandler(ctx context.Context, req *loghttp.RangeQu
308300
sp.LogKV(statResult.KVList()...)
309301
}
310302

311-
status := 200
312-
if err != nil {
313-
status, _ = serverutil.ClientHTTPStatusAndError(err)
314-
}
315-
303+
status, _ := serverutil.ClientHTTPStatusAndError(err)
316304
logql.RecordStatsQueryMetrics(ctx, util_log.Logger, req.Start, req.End, req.Query, strconv.Itoa(status), statResult)
317305

318306
return resp, err
@@ -340,11 +328,7 @@ func (q *QuerierAPI) IndexShardsHandler(ctx context.Context, req *loghttp.RangeQ
340328
sp.LogKV(statResult.KVList()...)
341329
}
342330

343-
status := 200
344-
if err != nil {
345-
status, _ = serverutil.ClientHTTPStatusAndError(err)
346-
}
347-
331+
status, _ := serverutil.ClientHTTPStatusAndError(err)
348332
logql.RecordShardsQueryMetrics(
349333
ctx, util_log.Logger, req.Start, req.End, req.Query, targetBytesPerShard, strconv.Itoa(status), resLength, statResult,
350334
)
@@ -377,11 +361,7 @@ func (q *QuerierAPI) VolumeHandler(ctx context.Context, req *logproto.VolumeRequ
377361
sp.LogKV(statResult.KVList()...)
378362
}
379363

380-
status := 200
381-
if err != nil {
382-
status, _ = serverutil.ClientHTTPStatusAndError(err)
383-
}
384-
364+
status, _ := serverutil.ClientHTTPStatusAndError(err)
385365
logql.RecordVolumeQueryMetrics(ctx, util_log.Logger, req.From.Time(), req.Through.Time(), req.GetQuery(), uint32(req.GetLimit()), time.Duration(req.GetStep()), strconv.Itoa(status), statResult)
386366

387367
return resp, nil

‎pkg/util/server/error.go‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ func WriteError(err error, w http.ResponseWriter) {
4848
// ClientHTTPStatusAndError returns error and http status that is "safe" to return to client without
4949
// exposing any implementation details.
5050
func ClientHTTPStatusAndError(err error) (int, error) {
51+
if err == nil {
52+
return http.StatusOK, nil
53+
}
54+
5155
var (
5256
queryErr storage_errors.QueryError
5357
promErr promql.ErrStorage

0 commit comments

Comments
 (0)