mirror of
https://github.com/signalapp/Signal-Server
synced 2026-04-20 03:28:04 +01:00
Support sub-millisecond permit regeneration durations in rate limiters
This commit is contained in:
committed by
Jon Chambers
parent
82ed783a2d
commit
e38a713ccc
@@ -11,11 +11,16 @@ import java.time.Duration;
|
||||
public record RateLimiterConfig(int bucketSize, Duration permitRegenerationDuration) {
|
||||
|
||||
public double leakRatePerMillis() {
|
||||
return 1.0 / permitRegenerationDuration.toMillis();
|
||||
return 1.0 / (permitRegenerationDuration.toNanos() / 1e6);
|
||||
}
|
||||
|
||||
@AssertTrue
|
||||
public boolean hasPositiveRegenerationRate() {
|
||||
return permitRegenerationDuration.toMillis() > 0;
|
||||
try {
|
||||
return permitRegenerationDuration.toNanos() > 0;
|
||||
} catch (final ArithmeticException e) {
|
||||
// The duration was too large to fit in a long, so it's definitely positive
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user