From b11dab64f5cd5273247a1ae4c959c25168452a6a Mon Sep 17 00:00:00 2001 From: Tom Clegg Date: Mon, 4 Dec 2023 18:11:47 -0500 Subject: [PATCH] 21227: Don't reduce outgoing request concurrency below 4. Arvados-DCO-1.1-Signed-off-by: Tom Clegg --- sdk/go/arvados/limiter.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/sdk/go/arvados/limiter.go b/sdk/go/arvados/limiter.go index dc944160ab..9edc5386a7 100644 --- a/sdk/go/arvados/limiter.go +++ b/sdk/go/arvados/limiter.go @@ -16,6 +16,7 @@ import ( var ( requestLimiterQuietPeriod = time.Second requestLimiterInitialLimit int64 = 8 + requestLimiterMinimumLimit int64 = 4 ) type requestLimiter struct { @@ -145,6 +146,12 @@ func (rl *requestLimiter) Report(resp *http.Response, err error) bool { if max := rl.current * 2; max < rl.limit { rl.limit = max } + if min := requestLimiterMinimumLimit; min > rl.limit { + // If limit is too low, programs like + // controller and test suites can end up with + // too few slots to complete a single request. + rl.limit = min + } if rl.maxlimit > 0 && rl.maxlimit < rl.limit { rl.limit = rl.maxlimit } -- 2.30.2