From 37bd2212f625089a81c7518e8f0b033c056a722c Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Sat, 24 Dec 2022 21:57:13 +0000 Subject: [PATCH] [Minor] Ratelimit: Further penging field adjustments --- src/plugins/lua/ratelimit.lua | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/plugins/lua/ratelimit.lua b/src/plugins/lua/ratelimit.lua index 9975f17a3..d61e3990f 100644 --- a/src/plugins/lua/ratelimit.lua +++ b/src/plugins/lua/ratelimit.lua @@ -192,12 +192,12 @@ local bucket_update_script = [[ end end - local burst = tonumber(redis.call('HGET', KEYS[1], 'b')) - if burst < 0 then burst = 0 end + local burst,pending = unpack(redis.call('HMGET', KEYS[1], 'b', 'p')) + burst,pending = tonumber(burst or '0'),tonumber(pending or '0') + if burst < 0 then burst = nrcpt else burst = burst + nrcpt end + if pending < nrcpt then pending = 0 else pending = pending - nrcpt end - redis.call('HINCRBYFLOAT', KEYS[1], 'b', nrcpt) - redis.call('HINCRBY', KEYS[1], 'p', -(nrcpt)) - redis.call('HSET', KEYS[1], 'l', KEYS[2]) + redis.call('HMSET', KEYS[1], 'b', tostring(burst), 'p', tostring(pending), 'l', KEYS[2]) redis.call('EXPIRE', KEYS[1], KEYS[7]) return {tostring(burst), tostring(dr), tostring(db)} -- 2.39.5