Files
swift/test/unit/obj/test_updater.py
Alistair Coles 5227cb702b Refactor rate-limiting helper into a class
Replaces the ratelimit_sleep helper function with an
EventletRateLimiter class that encapsulates the rate-limiting state
that previously needed to be maintained by the caller of the function.

The ratelimit_sleep function is retained but deprecated, and now
forwards to the EventletRateLimiter class.

The object updater's BucketizedUpdateSkippingLimiter is refactored to
take advantage of the new EventletRateLimiter class.

The rate limiting algorithm is corrected to make the allowed request
rate more uniform: previously pairs of requests would be allowed in
rapid succession before the rate limiter would the sleep for the time
allowance consumed by those two requests; now the rate limiter will
sleep as required after each allowed request. For example, before a
max_rate of 1 per second might result in 2 requests being allowed
followed by a 2 second sleep. That is corrected to be a sleep of 1
second after each request.

Change-Id: Ibcf4dbeb4332dee7e9e233473d4ceaf75a5a85c7
2022-05-04 11:22:50 +01:00

92 KiB