Prometheus: Fix panic-ing when closing response body (#63895)

Prometheus: Fix panicing when closing response body
This commit is contained in:
Sofia Papagiannaki 2023-02-28 20:08:01 +02:00 committed by GitHub
parent 2141b1ea93
commit e643437ee6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -153,6 +153,12 @@ func (s *QueryData) fetch(ctx context.Context, client *client.Client, q *models.
func (s *QueryData) rangeQuery(ctx context.Context, c *client.Client, q *models.Query, headers map[string]string) backend.DataResponse {
res, err := c.QueryRange(ctx, q)
if err != nil {
return backend.DataResponse{
Error: err,
}
}
defer func() {
err := res.Body.Close()
if err != nil {
@ -160,16 +166,17 @@ func (s *QueryData) rangeQuery(ctx context.Context, c *client.Client, q *models.
}
}()
if err != nil {
return backend.DataResponse{
Error: err,
}
}
return s.parseResponse(ctx, q, res)
}
func (s *QueryData) instantQuery(ctx context.Context, c *client.Client, q *models.Query, headers map[string]string) backend.DataResponse {
res, err := c.QueryInstant(ctx, q)
if err != nil {
return backend.DataResponse{
Error: err,
}
}
defer func() {
err := res.Body.Close()
if err != nil {
@ -177,28 +184,23 @@ func (s *QueryData) instantQuery(ctx context.Context, c *client.Client, q *model
}
}()
if err != nil {
return backend.DataResponse{
Error: err,
}
}
return s.parseResponse(ctx, q, res)
}
func (s *QueryData) exemplarQuery(ctx context.Context, c *client.Client, q *models.Query, headers map[string]string) backend.DataResponse {
res, err := c.QueryExemplars(ctx, q)
if err != nil {
return backend.DataResponse{
Error: err,
}
}
defer func() {
err := res.Body.Close()
if err != nil {
s.log.Warn("failed to close response body", "error", err)
}
}()
if err != nil {
return backend.DataResponse{
Error: err,
}
}
return s.parseResponse(ctx, q, res)
}