in internal/httprange/http_reader.go [59:102]
func (r *Reader) ensureResponse() error {
if r.res != nil {
return nil
}
req, err := r.prepareRequest()
if err != nil {
log.WithError(err).WithFields(logrus.Fields{
"range_start": r.rangeStart,
"range_size": r.rangeSize,
"offset": r.offset,
"resource_size": r.Resource.Size,
"resource_url": logging.CleanURL(r.Resource.URL()),
}).Error(rangeRequestPrepareErrMsg)
return err
}
metrics.HTTPRangeOpenRequests.Inc()
res, err := r.Resource.httpClient.Do(req)
if err != nil {
metrics.HTTPRangeOpenRequests.Dec()
return err
}
err = r.setResponse(res)
if err != nil {
metrics.HTTPRangeOpenRequests.Dec()
// cleanup body on failure from r.setResponse to avoid memory leak
res.Body.Close()
logging.LogRequest(req).WithError(err).WithFields(log.Fields{
"range_start": r.rangeStart,
"range_size": r.rangeSize,
"offset": r.offset,
"resource_size": r.Resource.Size,
"resource_url": logging.CleanURL(r.Resource.URL()),
"status": res.StatusCode,
"status_text": res.Status,
}).Error(rangeRequestFailedErrMsg)
}
return err
}