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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ed5172220150b7969f1df9030b0c721529017407dbc829f3421634fa91bcd2c0
4
- data.tar.gz: 768ac1fff03adf7c186011bde86d25ec07f7f032b81794c1fe56f8c778304120
3
+ metadata.gz: 8f38201a590863fbca01ac13557043dd8f29aafebc8bffb510452dc5e0f19065
4
+ data.tar.gz: 57d2f4b611c1c4150676290c207d8d72e7fe649971d93038c8a17334658df2cc
5
5
  SHA512:
6
- metadata.gz: 11fdd966c10b8e6202255e1c1f992239066d6593d6b0eab2d81b4d7a1179688272cb1e661a6318e1f4291c410d40b93d56bc270042cdc12ece1604ea7fe1dc57
7
- data.tar.gz: aef378f5b068cbcef69b5188314b253908a61d1cf1056d1e036609ad3b510b69aab0cb8f9bd450dfed706cd122eaa1725164f1c7a3651001537e363a4e6eb1d0
6
+ metadata.gz: 99d114cc8f28ba0c62a30db78cc8b32234f67ff0689ef53e8fc206e72cb89f5c0a70bf29151a873e0b4691286c73ad9ee3a8df4ed6c04de9fffcdb775b239391
7
+ data.tar.gz: 802503b25b8986c5e18c6f4bb69614e8df967ba3ab6de07f925431fc4dc711aeffa0a38db1ba684a7f6023048d3989cc095b2317058973604a551a0fdcb8972a
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rapidity (0.0.8.373806)
4
+ rapidity (0.0.8.380347)
5
5
  activesupport
6
6
  connection_pool
7
7
  ostruct
@@ -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
- if not limit.exists then
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
- -- Фаза 2: Применение изменений (Write)
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.373806
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-07 00:00:00.000000000 Z
12
+ date: 2026-05-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport