RateLimiter rejects all events when Limit is between 0 and 1 #1853
Labels
Comments
As ratelimiter middleware (default implementation) is wrapper around https://pkg.go.dev/golang.org/x/time/rate library and rate value goes directly to that library I think |
Merged
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Checklist
Issue Description
When using the RateLimiter Middleware with a rate between 0 and 1 all events will be rejected instead of applying the specified rate. E.g.:
e.Use(middleware.RateLimiter(middleware.NewRateLimiterMemoryStore(0.5)))
I am not saying that it is a common use case to have a
rate.Limit
between 0 and 1, but it is very confusing thatNewRateLimiterMemoryStore()
accepts a value of type float, the docs don't mention any restrictions for non-zero values but still the argument is interpreted as zero instead of its actual value.Expected behaviour
One of those:
rate.Limit
is handledNewRateLimiterMemoryStore()
only accepts integer valuesrate.Limit
correctly, e.g. a limit of 0.5 will result in an equivalent rate of 30 requests/minuteActual behaviour
a fractional
rate.Limit
between 0 and 1 is surprisingly interpreted like a zero LimitVersion/commit
v4.2.2
The text was updated successfully, but these errors were encountered: