heimdall
heimdall copied to clipboard
Retrier called even with 0 retry count
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(500)
}))
defer server.Close()
retryCalled := 0
httpclient := httpclient.NewClient(
httpclient.WithRetrier(heimdall.NewRetrierFunc(func(_ int) time.Duration {
retryCalled++
return 1 * time.Second
})),
httpclient.WithRetryCount(0),
)
req, err := http.NewRequest(http.MethodGet, server.URL, nil)
assert.NoError(t, err)
res, err := httpclient.Do(req)
assert.NoError(t, err)
_ = res
assert.Equal(t, 0, retryCalled)
retrier still called with 0 retry count, is this expected?
Another problem that is linked is that time.Sleep(backoffTime)
will be called even when the retries are exhausted, which can lead to quite a waste of time for the caller.
If we agree on both these issues, I'd be happy to propose a fix.