redis_queued_locks 1.16.1 → 1.17.0

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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/.claude/project-overview.md +205 -0
  3. data/.claude/rules/acquirer.md +61 -0
  4. data/.claude/rules/arguments.md +59 -0
  5. data/.claude/rules/logic.md +57 -0
  6. data/.claude/rules/swarm.md +119 -0
  7. data/.claude/rules/tests.md +42 -0
  8. data/.claude/rules/type-checking.md +42 -0
  9. data/.claude/rules/visitors.md +64 -0
  10. data/.rubocop.rbs.yml +31 -0
  11. data/.rubocop.yml +3 -3
  12. data/.ruby-version +1 -1
  13. data/CHANGELOG.md +27 -1
  14. data/CLAUDE.md +31 -0
  15. data/LICENSE.txt +1 -1
  16. data/README.md +37 -13
  17. data/Rakefile +31 -2
  18. data/github_ci/.keep +0 -0
  19. data/lib/redis_queued_locks/acquirer/acquire_lock/delay_execution.rb +2 -2
  20. data/lib/redis_queued_locks/acquirer/acquire_lock/try_to_lock.rb +1 -4
  21. data/lib/redis_queued_locks/acquirer/acquire_lock/yield_expire.rb +1 -1
  22. data/lib/redis_queued_locks/acquirer/acquire_lock.rb +0 -4
  23. data/lib/redis_queued_locks/acquirer/lock_series_poc/instr_visitor.rb +0 -2
  24. data/lib/redis_queued_locks/acquirer/lock_series_poc/log_visitor.rb +0 -1
  25. data/lib/redis_queued_locks/acquirer/lock_series_poc.rb +62 -53
  26. data/lib/redis_queued_locks/client.rb +145 -144
  27. data/lib/redis_queued_locks/config/dsl.rb +4 -10
  28. data/lib/redis_queued_locks/swarm/flush_zombies.rb +8 -6
  29. data/lib/redis_queued_locks/swarm/supervisor.rb +1 -1
  30. data/lib/redis_queued_locks/swarm/swarm_element/isolated.rb +166 -44
  31. data/lib/redis_queued_locks/swarm/swarm_element/threaded.rb +45 -47
  32. data/lib/redis_queued_locks/version.rb +2 -2
  33. data/redis_queued_locks.gemspec +1 -1
  34. data/sig/redis_queued_locks/swarm/flush_zombies.rbs +1 -1
  35. data/sig/redis_queued_locks/swarm/swarm_element/isolated.rbs +13 -5
  36. data/sig/redis_queued_locks/swarm/swarm_element/threaded.rbs +6 -6
  37. metadata +14 -5
  38. data/github_ci/ruby3.3.gemfile +0 -17
  39. data/github_ci/ruby3.3.gemfile.lock +0 -216
@@ -10,14 +10,14 @@ module RedisQueuedLocks
10
10
  @swarm_element: Thread?
11
11
  @main_loop: Thread?
12
12
  @swarm_element_commands: Thread::SizedQueue[Symbol]?
13
- @swarm_element_results: Thread::SizedQueue[{ ok: bool, result: Hash[untyped,untyped] }]?
13
+ @swarm_element_results: Thread::SizedQueue[swarmLoopReply]?
14
14
  @sync: RQL::Utilities::Lock
15
15
 
16
16
  attr_reader rql_client: RQL::Client
17
17
  attr_reader swarm_element: Thread?
18
18
  attr_reader main_loop: Thread?
19
19
  attr_reader swarm_element_commands: Thread::SizedQueue[Symbol]?
20
- attr_reader swarm_element_results: Thread::SizedQueue[{ ok: bool, result: Hash[untyped,untyped] }]?
20
+ attr_reader swarm_element_results: Thread::SizedQueue[swarmLoopReply]?
21
21
  attr_reader sync: RQL::Utilities::Lock
22
22
 
23
23
  def initialize: (RQL::Client rql_client) -> void
@@ -46,14 +46,14 @@ module RedisQueuedLocks
46
46
  def terminating?: () -> bool?
47
47
  def swarmed__stopped?: () -> bool
48
48
 
49
- type swarmLoopIsActive = { ok: bool, result: { is_active: bool } }
50
- def swarm_loop__is_active: () -> swarmLoopIsActive?
51
-
52
- type swarmLoopStatus = { ok: bool, result: { main_loop: { alive: bool, state: String } } }
49
+ type swarmLoopStatus = { alive: bool, state: String }
50
+ type swarmLoopReply = swarmLoopStatus | bool
51
+ def swarm_loop__is_active: () -> bool?
53
52
  def swarm_loop__status: () -> swarmLoopStatus?
54
53
 
55
54
  def swarm_loop__start: () -> void
56
55
  def swarm_loop__stop: () -> void
56
+ def swarm_loop__send_command: (Symbol command) -> swarmLoopReply?
57
57
  def swarm_element__termiante: () -> void
58
58
  end
59
59
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis_queued_locks
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.16.1
4
+ version: 1.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rustam Ibragimov
@@ -35,17 +35,26 @@ executables: []
35
35
  extensions: []
36
36
  extra_rdoc_files: []
37
37
  files:
38
+ - ".claude/project-overview.md"
39
+ - ".claude/rules/acquirer.md"
40
+ - ".claude/rules/arguments.md"
41
+ - ".claude/rules/logic.md"
42
+ - ".claude/rules/swarm.md"
43
+ - ".claude/rules/tests.md"
44
+ - ".claude/rules/type-checking.md"
45
+ - ".claude/rules/visitors.md"
38
46
  - ".rspec"
47
+ - ".rubocop.rbs.yml"
39
48
  - ".rubocop.yml"
40
49
  - ".ruby-version"
41
50
  - CHANGELOG.md
51
+ - CLAUDE.md
42
52
  - CODE_OF_CONDUCT.md
43
53
  - LICENSE.txt
44
54
  - README.md
45
55
  - Rakefile
46
56
  - Steepfile
47
- - github_ci/ruby3.3.gemfile
48
- - github_ci/ruby3.3.gemfile.lock
57
+ - github_ci/.keep
49
58
  - lib/redis_queued_locks.rb
50
59
  - lib/redis_queued_locks/acquirer.rb
51
60
  - lib/redis_queued_locks/acquirer/acquire_lock.rb
@@ -176,14 +185,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
176
185
  requirements:
177
186
  - - ">="
178
187
  - !ruby/object:Gem::Version
179
- version: '3.3'
188
+ version: '4.0'
180
189
  required_rubygems_version: !ruby/object:Gem::Requirement
181
190
  requirements:
182
191
  - - ">="
183
192
  - !ruby/object:Gem::Version
184
193
  version: '0'
185
194
  requirements: []
186
- rubygems_version: 3.6.9
195
+ rubygems_version: 4.0.22
187
196
  specification_version: 4
188
197
  summary: Distributed locks with "prioritized lock acquisition queue" capabilities
189
198
  based on the Redis Database.
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source 'https://rubygems.org'
4
-
5
- gemspec path: '..'
6
-
7
- gem 'activesupport'
8
- gem 'armitage-rubocop'
9
- gem 'bundler'
10
- gem 'pry'
11
- gem 'rake'
12
- gem 'rbs'
13
- gem 'rspec'
14
- gem 'rspec-retry' # NOTE: temporary decision for non-refactored tests
15
- gem 'simplecov'
16
- gem 'simplecov-lcov'
17
- gem 'steep'
@@ -1,216 +0,0 @@
1
- PATH
2
- remote: ..
3
- specs:
4
- redis_queued_locks (1.15.1)
5
- redis-client (~> 0.20)
6
-
7
- GEM
8
- remote: https://rubygems.org/
9
- specs:
10
- activesupport (8.1.0)
11
- base64
12
- bigdecimal
13
- concurrent-ruby (~> 1.0, >= 1.3.1)
14
- connection_pool (>= 2.2.5)
15
- drb
16
- i18n (>= 1.6, < 2)
17
- json
18
- logger (>= 1.4.2)
19
- minitest (>= 5.1)
20
- securerandom (>= 0.3)
21
- tzinfo (~> 2.0, >= 2.0.5)
22
- uri (>= 0.13.1)
23
- armitage-rubocop (1.75.7.7)
24
- rubocop (= 1.75.7)
25
- rubocop-capybara (= 2.22.1)
26
- rubocop-factory_bot (= 2.27.1)
27
- rubocop-on-rbs (= 1.7.0)
28
- rubocop-performance (= 1.25.0)
29
- rubocop-rails (= 2.32.0)
30
- rubocop-rake (= 0.7.1)
31
- rubocop-rspec (= 3.6.0)
32
- rubocop-rspec_rails (= 2.31.0)
33
- rubocop-thread_safety (= 0.7.2)
34
- ast (2.4.3)
35
- base64 (0.3.0)
36
- bigdecimal (3.3.1)
37
- coderay (1.1.3)
38
- concurrent-ruby (1.3.5)
39
- connection_pool (2.5.4)
40
- csv (3.3.5)
41
- diff-lcs (1.6.2)
42
- docile (1.4.1)
43
- drb (2.2.3)
44
- ffi (1.17.2)
45
- ffi (1.17.2-aarch64-linux-gnu)
46
- ffi (1.17.2-aarch64-linux-musl)
47
- ffi (1.17.2-arm-linux-gnu)
48
- ffi (1.17.2-arm-linux-musl)
49
- ffi (1.17.2-arm64-darwin)
50
- ffi (1.17.2-x86-linux-gnu)
51
- ffi (1.17.2-x86-linux-musl)
52
- ffi (1.17.2-x86_64-darwin)
53
- ffi (1.17.2-x86_64-linux-gnu)
54
- ffi (1.17.2-x86_64-linux-musl)
55
- fileutils (1.7.3)
56
- i18n (1.14.7)
57
- concurrent-ruby (~> 1.0)
58
- json (2.15.1)
59
- language_server-protocol (3.17.0.5)
60
- lint_roller (1.1.0)
61
- listen (3.9.0)
62
- rb-fsevent (~> 0.10, >= 0.10.3)
63
- rb-inotify (~> 0.9, >= 0.9.10)
64
- logger (1.7.0)
65
- method_source (1.1.0)
66
- minitest (5.26.0)
67
- mutex_m (0.3.0)
68
- parallel (1.27.0)
69
- parser (3.3.9.0)
70
- ast (~> 2.4.1)
71
- racc
72
- prism (1.6.0)
73
- pry (0.15.2)
74
- coderay (~> 1.1)
75
- method_source (~> 1.0)
76
- racc (1.8.1)
77
- rack (3.2.3)
78
- rainbow (3.1.1)
79
- rake (13.3.0)
80
- rb-fsevent (0.11.2)
81
- rb-inotify (0.11.1)
82
- ffi (~> 1.0)
83
- rbs (3.9.5)
84
- logger
85
- redis-client (0.26.1)
86
- connection_pool
87
- regexp_parser (2.11.3)
88
- rspec (3.13.2)
89
- rspec-core (~> 3.13.0)
90
- rspec-expectations (~> 3.13.0)
91
- rspec-mocks (~> 3.13.0)
92
- rspec-core (3.13.6)
93
- rspec-support (~> 3.13.0)
94
- rspec-expectations (3.13.5)
95
- diff-lcs (>= 1.2.0, < 2.0)
96
- rspec-support (~> 3.13.0)
97
- rspec-mocks (3.13.6)
98
- diff-lcs (>= 1.2.0, < 2.0)
99
- rspec-support (~> 3.13.0)
100
- rspec-retry (0.6.2)
101
- rspec-core (> 3.3)
102
- rspec-support (3.13.6)
103
- rubocop (1.75.7)
104
- json (~> 2.3)
105
- language_server-protocol (~> 3.17.0.2)
106
- lint_roller (~> 1.1.0)
107
- parallel (~> 1.10)
108
- parser (>= 3.3.0.2)
109
- rainbow (>= 2.2.2, < 4.0)
110
- regexp_parser (>= 2.9.3, < 3.0)
111
- rubocop-ast (>= 1.44.0, < 2.0)
112
- ruby-progressbar (~> 1.7)
113
- unicode-display_width (>= 2.4.0, < 4.0)
114
- rubocop-ast (1.47.1)
115
- parser (>= 3.3.7.2)
116
- prism (~> 1.4)
117
- rubocop-capybara (2.22.1)
118
- lint_roller (~> 1.1)
119
- rubocop (~> 1.72, >= 1.72.1)
120
- rubocop-factory_bot (2.27.1)
121
- lint_roller (~> 1.1)
122
- rubocop (~> 1.72, >= 1.72.1)
123
- rubocop-on-rbs (1.7.0)
124
- lint_roller (~> 1.1)
125
- rbs (~> 3.5)
126
- rubocop (>= 1.72.1, < 2.0)
127
- zlib
128
- rubocop-performance (1.25.0)
129
- lint_roller (~> 1.1)
130
- rubocop (>= 1.75.0, < 2.0)
131
- rubocop-ast (>= 1.38.0, < 2.0)
132
- rubocop-rails (2.32.0)
133
- activesupport (>= 4.2.0)
134
- lint_roller (~> 1.1)
135
- rack (>= 1.1)
136
- rubocop (>= 1.75.0, < 2.0)
137
- rubocop-ast (>= 1.44.0, < 2.0)
138
- rubocop-rake (0.7.1)
139
- lint_roller (~> 1.1)
140
- rubocop (>= 1.72.1)
141
- rubocop-rspec (3.6.0)
142
- lint_roller (~> 1.1)
143
- rubocop (~> 1.72, >= 1.72.1)
144
- rubocop-rspec_rails (2.31.0)
145
- lint_roller (~> 1.1)
146
- rubocop (~> 1.72, >= 1.72.1)
147
- rubocop-rspec (~> 3.5)
148
- rubocop-thread_safety (0.7.2)
149
- lint_roller (~> 1.1)
150
- rubocop (~> 1.72, >= 1.72.1)
151
- ruby-progressbar (1.13.0)
152
- securerandom (0.4.1)
153
- simplecov (0.22.0)
154
- docile (~> 1.1)
155
- simplecov-html (~> 0.11)
156
- simplecov_json_formatter (~> 0.1)
157
- simplecov-html (0.13.2)
158
- simplecov-lcov (0.9.0)
159
- simplecov_json_formatter (0.1.4)
160
- steep (1.10.0)
161
- activesupport (>= 5.1)
162
- concurrent-ruby (>= 1.1.10)
163
- csv (>= 3.0.9)
164
- fileutils (>= 1.1.0)
165
- json (>= 2.1.0)
166
- language_server-protocol (>= 3.17.0.4, < 4.0)
167
- listen (~> 3.0)
168
- logger (>= 1.3.0)
169
- mutex_m (>= 0.3.0)
170
- parser (>= 3.1)
171
- rainbow (>= 2.2.2, < 4.0)
172
- rbs (~> 3.9)
173
- securerandom (>= 0.1)
174
- strscan (>= 1.0.0)
175
- terminal-table (>= 2, < 5)
176
- uri (>= 0.12.0)
177
- strscan (3.1.5)
178
- terminal-table (4.0.0)
179
- unicode-display_width (>= 1.1.1, < 4)
180
- tzinfo (2.0.6)
181
- concurrent-ruby (~> 1.0)
182
- unicode-display_width (3.2.0)
183
- unicode-emoji (~> 4.1)
184
- unicode-emoji (4.1.0)
185
- uri (1.0.4)
186
- zlib (3.2.1)
187
-
188
- PLATFORMS
189
- aarch64-linux-gnu
190
- aarch64-linux-musl
191
- arm-linux-gnu
192
- arm-linux-musl
193
- arm64-darwin
194
- ruby
195
- x86-linux-gnu
196
- x86-linux-musl
197
- x86_64-darwin
198
- x86_64-linux-gnu
199
- x86_64-linux-musl
200
-
201
- DEPENDENCIES
202
- activesupport
203
- armitage-rubocop
204
- bundler
205
- pry
206
- rake
207
- rbs
208
- redis_queued_locks!
209
- rspec
210
- rspec-retry
211
- simplecov
212
- simplecov-lcov
213
- steep
214
-
215
- BUNDLED WITH
216
- 2.7.2