Skip to content

RateLimiter rejects all events when Limit is between 0 and 1 #1853

Closed
@aschiffmann

Description

@aschiffmann

Checklist

  • Dependencies installed
  • No typos
  • Searched existing issues and docs

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 that NewRateLimiterMemoryStore() 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:

  • the docs explains how a fractional rate.Limit is handled
  • NewRateLimiterMemoryStore() only accepts integer values
  • the RateLimiter interprets a fractional rate.Limit correctly, e.g. a limit of 0.5 will result in an equivalent rate of 30 requests/minute

Actual behaviour

a fractional rate.Limit between 0 and 1 is surprisingly interpreted like a zero Limit

Version/commit

v4.2.2

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions