rapidity 0.0.8.373806 → 0.0.8.380347
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 +4 -4
- data/Gemfile.lock +1 -1
- data/lib/rapidity/share/lua_scripts/acquire.lua +14 -10
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8f38201a590863fbca01ac13557043dd8f29aafebc8bffb510452dc5e0f19065
|
|
4
|
+
data.tar.gz: 57d2f4b611c1c4150676290c207d8d72e7fe649971d93038c8a17334658df2cc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 99d114cc8f28ba0c62a30db78cc8b32234f67ff0689ef53e8fc206e72cb89f5c0a70bf29151a873e0b4691286c73ad9ee3a8df4ed6c04de9fffcdb775b239391
|
|
7
|
+
data.tar.gz: 802503b25b8986c5e18c6f4bb69614e8df967ba3ab6de07f925431fc4dc711aeffa0a38db1ba684a7f6023048d3989cc095b2317058973604a551a0fdcb8972a
|
data/Gemfile.lock
CHANGED
|
@@ -134,13 +134,23 @@ local function process_all_limits(limit_keys, requested, current_time)
|
|
|
134
134
|
end
|
|
135
135
|
|
|
136
136
|
local limits = {}
|
|
137
|
-
|
|
138
|
-
-- Фаза 1: Проверка всех лимитов (Read & Validate)
|
|
137
|
+
-- Фаза 1: Изменяем ttl для всех существующих ключей и сохраняем объекты лимитов для существующих
|
|
139
138
|
for i = 1, #limit_keys do
|
|
140
139
|
local key = limit_keys[i]
|
|
141
140
|
local limit = Limit:new(key)
|
|
141
|
+
if limit.exists then
|
|
142
|
+
-- Продлеваем жизнь ключу, чтобы он не удалился, если к нему активно обращаются.
|
|
143
|
+
-- раньше был GT, но он только с версии 7 (GT - только если новый TTL больше текущего остатка)
|
|
144
|
+
redis.call("EXPIRE", limit.key, key_ttl)
|
|
145
|
+
table.insert(limits, limit)
|
|
146
|
+
end
|
|
147
|
+
end
|
|
142
148
|
|
|
143
|
-
|
|
149
|
+
-- Фаза 2: Проверка всех лимитов (Read & Validate)
|
|
150
|
+
for i = 1, #limit_keys do
|
|
151
|
+
local key = limit_keys[i]
|
|
152
|
+
local limit = limits[i]
|
|
153
|
+
if not limit then
|
|
144
154
|
return { "result", "false", "retryable", "false", "error", "key_not_found", "key", key }
|
|
145
155
|
end
|
|
146
156
|
|
|
@@ -157,20 +167,14 @@ local function process_all_limits(limit_keys, requested, current_time)
|
|
|
157
167
|
"key", key
|
|
158
168
|
}
|
|
159
169
|
end
|
|
160
|
-
|
|
161
|
-
table.insert(limits, limit)
|
|
162
170
|
end
|
|
163
171
|
|
|
164
|
-
-- Фаза
|
|
172
|
+
-- Фаза 3: Применение изменений (Write)
|
|
165
173
|
-- Выполняется только если всем лимитам хватило токенов
|
|
166
174
|
for i = 1, #limits do
|
|
167
175
|
local limit = limits[i]
|
|
168
176
|
limit:acquire(requested)
|
|
169
177
|
limit:save()
|
|
170
|
-
|
|
171
|
-
-- Продлеваем жизнь ключу, чтобы он не удалился, если к нему активно обращаются.
|
|
172
|
-
-- раньше был GT, но он только с версии 7 (GT - только если новый TTL больше текущего остатка)
|
|
173
|
-
redis.call("EXPIRE", limit.key, key_ttl)
|
|
174
178
|
end
|
|
175
179
|
|
|
176
180
|
return { "result", "true", "keys", limit_keys }
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rapidity
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.8.
|
|
4
|
+
version: 0.0.8.380347
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Yurusov Vlad
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2026-05-
|
|
12
|
+
date: 2026-05-29 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: activesupport
|