This commit aimed to provide a customizable retry logic. It can be seen in line 48, that the new retry_check
function is only executed if retryable(req)
returns false
:
retry = retryable(req) || retryablebody(req) && _retry_check(s, ex, req, retry_check)
But with default arguments on retry_delays
and retries
, retryable(req)
is typically true
.
An ugly workaround to make retry_check
accessible is this:
HTTP.get(<url>, retries=1, retry_delays=ExponentialBackOff(n=100), retry_check=(args...)->(@info(: retry_check); true))
I think those changes are critical since by default there are no further retry checks anymore, which causes a lot of unnecessary time-consuming retries.
Was it actually intended that neither the response status is checked with "retryable" nor all the other possibilities ("isrecoverable") that make a recovery very unlikely?
What is actually the use of the retryattempt[]
counter, because the ExponentialBackOff iterator is already limiting the number of retries?
- Julia 1.8.4
- HTTP.jl 1.6.3
- MbedTLS.jl 1.1.7