redis-gcra 0.4.1 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e24cc90618628f397f2ceef8e2431ad3636ec59c
4
- data.tar.gz: fd6315aa24c6e7b4bfd54e8c450bf5a819a0cd66
3
+ metadata.gz: a555bd0c5133502c4cc4c08641264cd96e298eaa
4
+ data.tar.gz: 6bd73c4a8b8ffbcf8643f56486a75ca390a22f7b
5
5
  SHA512:
6
- metadata.gz: ef79f8e1d372661b75e326f2681e966738e104f79ad3ed23eb3bfcee56ce3aab9b9bd56c27e06e78cb89bf49e143c2b2e42530478aa3cc3eb500890841947271
7
- data.tar.gz: acb1bd7728d4382922b938c595987fac6baa70cfe8776c79d39b0999fb6c8cac20ac8cf6484c4c4a74558f75e0a1a7c16f6214517f561539a1eeb5e949294d68
6
+ metadata.gz: 94425557f81dc68a91f858e6743f659c0a09e792b552b1915f16299e6a93a8c69985edd66b1ca6ff92f55c64ac728b152ba8b2826f5f4ed4f42bd99f23c59bbd
7
+ data.tar.gz: 2d6624441c79b169756c2092e22dfa5e95b5f3b38ea09ba2d8ed5c07429c32105a0324a3a0d6b347ed724d994e95dc6feaa3c4ee20dd24f08adf7a2160d84a0a
data/README.md CHANGED
@@ -1,5 +1,6 @@
1
1
  # RedisGCRA
2
2
  [![Build Status](https://travis-ci.org/rwz/redis-gcra.svg?branch=master)](https://travis-ci.org/rwz/redis-gcra)
3
+ [![Gem Version](https://img.shields.io/gem/v/redis-gcra.svg)](https://rubygems.org/gems/redis-gcra)
3
4
 
4
5
  This gem is an implementation of [GCRA][gcra] for rate limiting based on Redis.
5
6
  The code requires Redis version 3.2 or newer since it relies on
@@ -1,3 +1,3 @@
1
1
  module RedisGCRA
2
- VERSION = "0.4.1".freeze
2
+ VERSION = "0.4.2".freeze
3
3
  end
@@ -28,7 +28,7 @@ end
28
28
  local allow_at = math.max(tat, now) - burst_offset
29
29
  local diff = now - allow_at
30
30
 
31
- local remaining = math.floor(diff / emission_interval)
31
+ local remaining = math.floor(diff / emission_interval + 0.5) -- poor's man round
32
32
 
33
33
  local reset_after = tat - now
34
34
  if reset_after == 0 then
@@ -38,7 +38,8 @@ end
38
38
  local limited
39
39
  local retry_after
40
40
 
41
- if remaining == 0 then
41
+ if remaining < 1 then
42
+ remaining = 0
42
43
  limited = 1
43
44
  retry_after = emission_interval - diff
44
45
  else
@@ -36,11 +36,12 @@ local allow_at = new_tat - burst_offset
36
36
  local diff = now - allow_at
37
37
 
38
38
  local limited
39
- local remaining
40
39
  local retry_after
41
40
  local reset_after
42
41
 
43
- if diff < 0 then
42
+ local remaining = math.floor(diff / emission_interval + 0.5) -- poor man's round
43
+
44
+ if remaining < 0 then
44
45
  limited = 1
45
46
  remaining = 0
46
47
  reset_after = tat - now
@@ -49,7 +50,6 @@ else
49
50
  limited = 0
50
51
  reset_after = new_tat - now
51
52
  redis.call("SET", rate_limit_key, new_tat, "EX", math.ceil(reset_after))
52
- remaining = math.floor(diff / emission_interval + 0.5) -- poor man's round
53
53
  retry_after = -1
54
54
  end
55
55
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis-gcra
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Pravosud
@@ -58,7 +58,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
58
58
  version: '0'
59
59
  requirements: []
60
60
  rubyforge_project:
61
- rubygems_version: 2.6.12
61
+ rubygems_version: 2.6.11
62
62
  signing_key:
63
63
  specification_version: 4
64
64
  summary: Rate limiting based on Generic Cell Rate Algorithm