fix: filter rest errors and logs returned (#16019)

This commit is contained in:
Klaus Post
2022-11-07 19:38:08 +01:00
committed by GitHub
parent 19d0340ddf
commit ddeca9f12a
4 changed files with 13 additions and 6 deletions

View File

@@ -199,11 +199,12 @@ func (c *Client) newRequest(ctx context.Context, u *url.URL, body io.Reader) (*h
type respBodyMonitor struct {
io.ReadCloser
expectTimeouts bool
}
func (r respBodyMonitor) Read(p []byte) (n int, err error) {
n, err = r.ReadCloser.Read(p)
if err != nil && err != io.EOF {
if xnet.IsNetworkOrHostDown(err, r.expectTimeouts) {
atomic.AddUint64(&globalStats.errs, 1)
}
return
@@ -211,7 +212,7 @@ func (r respBodyMonitor) Read(p []byte) (n int, err error) {
func (r respBodyMonitor) Close() (err error) {
err = r.ReadCloser.Close()
if err != nil {
if xnet.IsNetworkOrHostDown(err, r.expectTimeouts) {
atomic.AddUint64(&globalStats.errs, 1)
}
return
@@ -297,7 +298,7 @@ func (c *Client) Call(ctx context.Context, method string, values url.Values, bod
return nil, errors.New(resp.Status)
}
if !c.NoMetrics && !c.ExpectTimeouts {
resp.Body = &respBodyMonitor{resp.Body}
resp.Body = &respBodyMonitor{ReadCloser: resp.Body, expectTimeouts: c.ExpectTimeouts}
}
return resp.Body, nil
}