Skip to content

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

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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