staterecovery: fix ratelimit bug (#965)

* staterecovery: tmp disable test

* staterecovery: fix request rate limiter

* staterecovery: fix spotless
This commit is contained in:
Fluent Crafter
2025-05-08 17:47:52 +01:00
committed by GitHub
parent d9dddf3f98
commit 0fbb078463
2 changed files with 6 additions and 14 deletions

View File

@@ -64,10 +64,6 @@ class StaticVertxHttpRequestRateLimiter(
}
private fun fireRequest(requestAndFutureResponse: RequestAndFutureResponse) {
synchronized(this) {
lastRequestFiredTime = monotonicClock.markNow()
}
requestSender.makeRequest(requestAndFutureResponse.request)
.handle { response, error ->
if (error != null) {
@@ -76,6 +72,8 @@ class StaticVertxHttpRequestRateLimiter(
requestAndFutureResponse.future.complete(response)
}
}
lastRequestFiredTime = monotonicClock.markNow()
}
@Synchronized
@@ -97,9 +95,8 @@ class StaticVertxHttpRequestRateLimiter(
rateLimitBackoffDelay - lastRequestFiredTime.elapsedNow(),
requestLogFormatter.toLogString(request)
)
synchronized(this) {
requestQueue.add(req)
}
requestQueue.add(req)
}
return req.future

View File

@@ -57,15 +57,10 @@ class VertxHttpRequestRateLimiterAndRetryTest {
assertThat(baseReqSender.requestsTimesDiffs.size).isGreaterThanOrEqualTo(10)
// lenient assertion to avoid flakiness in the tests due to clock drift/precision
val lenientRateLimitBackoffDelay = rateLimitBackoffDelay - 1.milliseconds
baseReqSender.requestsTimesDiffs
.drop(1)
.forEachIndexed { index, delay ->
assertThat(delay)
.isGreaterThanOrEqualTo(lenientRateLimitBackoffDelay)
.withFailMessage {
"request $index time=$delay must be greater than rateLimitBackoffDelay=$rateLimitBackoffDelay"
}
.forEach { delay ->
assertThat(delay).isGreaterThanOrEqualTo(rateLimitBackoffDelay)
}
}
}