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
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # NOTE: Lock Series PoC
4
- # steep:ignore
5
4
  # rubocop:disable all
6
5
  # @api private
7
6
  # @since 1.16.0
@@ -15,7 +14,7 @@ module RedisQueuedLocks::Acquirer::LockSeriesPoC # steep:ignore
15
14
  class << self
16
15
  # @api private
17
16
  # @since 1.16.0
18
- # @version 1.16.1
17
+ # @version 1.16.2
19
18
  def lock_series_poc( # steep:ignore
20
19
  redis,
21
20
  lock_names,
@@ -175,8 +174,12 @@ module RedisQueuedLocks::Acquirer::LockSeriesPoC # steep:ignore
175
174
  instr_sampler:,
176
175
  instr_sample_this:
177
176
  )
178
- rescue => error
179
- if raise_errors && successfully_acquired_locks.any?
177
+ rescue RedisQueuedLocks::LockAlreadyObtainedError,
178
+ RedisQueuedLocks::LockAcquirementIntermediateTimeoutError,
179
+ RedisQueuedLocks::LockAcquirementTimeoutError,
180
+ RedisQueuedLocks::LockAcquirementRetryLimitError,
181
+ RedisQueuedLocks::ConflictLockObtainError => error
182
+ if successfully_acquired_locks.any?
180
183
  # NOTE: release all previously acquired locks if any next lock is already locked
181
184
  successfully_acquired_locks.each do |operation_result|
182
185
  lock_key = RedisQueuedLocks::Resource.prepare_lock_key(operation_result[:lock_name])
@@ -187,7 +190,8 @@ module RedisQueuedLocks::Acquirer::LockSeriesPoC # steep:ignore
187
190
  end
188
191
  end
189
192
  end
190
- raise(error)
193
+
194
+ raise(error) if raise_errors
191
195
  end
192
196
 
193
197
  if result[:ok]
@@ -225,61 +229,67 @@ module RedisQueuedLocks::Acquirer::LockSeriesPoC # steep:ignore
225
229
  RedisQueuedLocks::Resource::REDIS_TIMESHIFT_ERROR
226
230
  ).ceil(2)
227
231
 
228
- yield_result = yield_expire( # steep:ignore
229
- redis,
230
- logger,
231
- lock_keys_for_instrumentation.last,
232
- acquirer_id_for_instrumentation,
233
- host_id_for_instrumentation,
234
- access_strategy,
235
- timed,
236
- ttl_shift,
237
- ttl,
238
- queue_ttl,
239
- meta,
240
- log_sampled,
241
- instr_sampled,
242
- false, # should_expire (expire manually)
243
- false, # should_decrease (expire manually)
244
- &block
245
- )
232
+ yield_result = nil
233
+ is_lock_manually_released = nil
234
+ hold_time = nil
246
235
 
247
- is_lock_manually_released = false
236
+ begin
237
+ yield_result = yield_expire( # steep:ignore
238
+ redis,
239
+ logger,
240
+ lock_keys_for_instrumentation.last,
241
+ acquirer_id_for_instrumentation,
242
+ host_id_for_instrumentation,
243
+ access_strategy,
244
+ timed,
245
+ ttl_shift,
246
+ ttl,
247
+ queue_ttl,
248
+ meta,
249
+ log_sampled,
250
+ instr_sampled,
251
+ false, # should_expire (expire manually)
252
+ false, # should_decrease (expire manually)
253
+ &block
254
+ )
255
+ ensure
256
+ is_lock_manually_released = false
248
257
 
249
- # expire locks manually
250
- if block_given?
251
- redis.with do |conn|
252
- # use transaction in order to exclude any cross-locking during the group expiration
253
- conn.multi(watch: lock_keys_for_instrumentation) do |transaction|
254
- lock_keys_for_instrumentation.each do |lock_key|
255
- transaction.call('EXPIRE', lock_key, '0')
258
+ # expire locks manually
259
+ if block_given?
260
+ redis.with do |conn|
261
+ # use transaction in order to exclude any cross-locking during the group expiration
262
+ conn.multi(watch: lock_keys_for_instrumentation) do |transaction|
263
+ lock_keys_for_instrumentation.each do |lock_key|
264
+ transaction.call('EXPIRE', lock_key, '0')
265
+ end
256
266
  end
257
267
  end
268
+ is_lock_manually_released = true
258
269
  end
259
- is_lock_manually_released = true
260
- end
261
270
 
262
- rel_time = RedisQueuedLocks::Utilities.clock_gettime
263
- hold_time = ((rel_time - acq_end_time) / 1_000.0).ceil(2)
264
- ts = Time.now.to_f
271
+ rel_time = RedisQueuedLocks::Utilities.clock_gettime
272
+ hold_time = ((rel_time - acq_end_time) / 1_000.0).ceil(2)
273
+ ts = Time.now.to_f
265
274
 
266
- RedisQueuedLocks::Acquirer::LockSeriesPoC::LogVisitor.expire_lock_series( # steep:ignore
267
- logger, log_sampled, lock_keys_for_instrumentation,
268
- queue_ttl, acquirer_id_for_instrumentation, host_id_for_instrumentation, access_strategy
269
- ) if is_lock_manually_released
275
+ RedisQueuedLocks::Acquirer::LockSeriesPoC::LogVisitor.expire_lock_series( # steep:ignore
276
+ logger, log_sampled, lock_keys_for_instrumentation,
277
+ queue_ttl, acquirer_id_for_instrumentation, host_id_for_instrumentation, access_strategy
278
+ ) if is_lock_manually_released
270
279
 
271
- RedisQueuedLocks::Acquirer::LockSeriesPoC::InstrVisitor.lock_series_hold_and_release( # steep:ignore
272
- instrumenter,
273
- instr_sampled,
274
- lock_keys_for_instrumentation,
275
- ttl,
276
- acquirer_id_for_instrumentation,
277
- host_id_for_instrumentation,
278
- ts,
279
- acq_time,
280
- hold_time,
281
- instrument
282
- ) if is_lock_manually_released
280
+ RedisQueuedLocks::Acquirer::LockSeriesPoC::InstrVisitor.lock_series_hold_and_release( # steep:ignore
281
+ instrumenter,
282
+ instr_sampled,
283
+ lock_keys_for_instrumentation,
284
+ ttl,
285
+ acquirer_id_for_instrumentation,
286
+ host_id_for_instrumentation,
287
+ ts,
288
+ acq_time,
289
+ hold_time,
290
+ instrument
291
+ ) if is_lock_manually_released
292
+ end
283
293
 
284
294
  if detailed_result
285
295
  {
@@ -313,5 +323,4 @@ module RedisQueuedLocks::Acquirer::LockSeriesPoC # steep:ignore
313
323
  end
314
324
  end
315
325
  end
316
- # steep:ignore
317
326
  # rubocop:enable all
@@ -79,7 +79,7 @@ class RedisQueuedLocks::Client
79
79
  #
80
80
  # @api public
81
81
  # @since 1.9.0
82
- def swarm_info(zombie_ttl: config['swarm.flush_zombies.zombie_ttl']) # steep:ignore
82
+ def swarm_info(zombie_ttl: config['swarm.flush_zombies.zombie_ttl'])
83
83
  swarm.swarm_info(zombie_ttl:)
84
84
  end
85
85
 
@@ -108,9 +108,9 @@ class RedisQueuedLocks::Client
108
108
  # @api public
109
109
  # @since 1.9.0
110
110
  def flush_zombies(
111
- zombie_ttl: config['swarm.flush_zombies.zombie_ttl'], # steep:ignore
112
- lock_scan_size: config['swarm.flush_zombies.zombie_lock_scan_size'], # steep:ignore
113
- queue_scan_size: config['swarm.flush_zombies.zombie_queue_scan_size'] # steep:ignore
111
+ zombie_ttl: config['swarm.flush_zombies.zombie_ttl'],
112
+ lock_scan_size: config['swarm.flush_zombies.zombie_lock_scan_size'],
113
+ queue_scan_size: config['swarm.flush_zombies.zombie_queue_scan_size']
114
114
  )
115
115
  swarm.flush_zombies(zombie_ttl:, lock_scan_size:, queue_scan_size:)
116
116
  end
@@ -122,8 +122,8 @@ class RedisQueuedLocks::Client
122
122
  # @api public
123
123
  # @since 1.9.0
124
124
  def zombie_locks(
125
- zombie_ttl: config['swarm.flush_zombies.zombie_ttl'], # steep:ignore
126
- lock_scan_size: config['swarm.flush_zombies.zombie_lock_scan_size'] # steep:ignore
125
+ zombie_ttl: config['swarm.flush_zombies.zombie_ttl'],
126
+ lock_scan_size: config['swarm.flush_zombies.zombie_lock_scan_size']
127
127
  )
128
128
  swarm.zombie_locks(zombie_ttl:, lock_scan_size:)
129
129
  end
@@ -135,8 +135,8 @@ class RedisQueuedLocks::Client
135
135
  # @api ppublic
136
136
  # @since 1.9.0
137
137
  def zombie_acquirers(
138
- zombie_ttl: config['swarm.flush_zombies.zombie_ttl'], # steep:ignore
139
- lock_scan_size: config['swarm.flush_zombies.zombie_lock_scan_size'] # steep:ignore
138
+ zombie_ttl: config['swarm.flush_zombies.zombie_ttl'],
139
+ lock_scan_size: config['swarm.flush_zombies.zombie_lock_scan_size']
140
140
  )
141
141
  swarm.zombie_acquirers(zombie_ttl:, lock_scan_size:)
142
142
  end
@@ -146,7 +146,7 @@ class RedisQueuedLocks::Client
146
146
  #
147
147
  # @api public
148
148
  # @since 1.9.0
149
- def zombie_hosts(zombie_ttl: config['swarm.flush_zombies.zombie_ttl']) # steep:ignore
149
+ def zombie_hosts(zombie_ttl: config['swarm.flush_zombies.zombie_ttl'])
150
150
  swarm.zombie_hosts(zombie_ttl:)
151
151
  end
152
152
 
@@ -159,9 +159,10 @@ class RedisQueuedLocks::Client
159
159
  #
160
160
  # @api public
161
161
  # @since 1.9.0
162
+ # @version 1.17.0
162
163
  def zombies_info(
163
- zombie_ttl: config['swarm.flush_zombies.zombie_ttl'], # steep:ignore
164
- lock_scan_size: config['swarm.flush_zombies.zombie_ttl'] # steep:ignore
164
+ zombie_ttl: config['swarm.flush_zombies.zombie_ttl'],
165
+ lock_scan_size: config['swarm.flush_zombies.zombie_lock_scan_size']
165
166
  )
166
167
  swarm.zombies_info(zombie_ttl:, lock_scan_size:)
167
168
  end
@@ -313,32 +314,32 @@ class RedisQueuedLocks::Client
313
314
  # rubocop:disable Metrics/MethodLength
314
315
  def lock(
315
316
  lock_name,
316
- ttl: config['default_lock_ttl'], # steep:ignore
317
- queue_ttl: config['default_queue_ttl'], # steep:ignore
318
- timeout: config['try_to_lock_timeout'], # steep:ignore
319
- timed: config['is_timed_by_default'], # steep:ignore
320
- retry_count: config['retry_count'], # steep:ignore
321
- retry_delay: config['retry_delay'], # steep:ignore
322
- retry_jitter: config['retry_jitter'], # steep:ignore
317
+ ttl: config['default_lock_ttl'],
318
+ queue_ttl: config['default_queue_ttl'],
319
+ timeout: config['try_to_lock_timeout'],
320
+ timed: config['is_timed_by_default'],
321
+ retry_count: config['retry_count'],
322
+ retry_delay: config['retry_delay'],
323
+ retry_jitter: config['retry_jitter'],
323
324
  raise_errors: false,
324
325
  fail_fast: false,
325
- conflict_strategy: config['default_conflict_strategy'], # steep:ignore
326
+ conflict_strategy: config['default_conflict_strategy'],
326
327
  read_write_mode: :write,
327
- access_strategy: config['default_access_strategy'], # steep:ignore
328
+ access_strategy: config['default_access_strategy'],
328
329
  identity: uniq_identity,
329
330
  meta: nil,
330
- detailed_acq_timeout_error: config['detailed_acq_timeout_error'], # steep:ignore
331
- logger: config['logger'], # steep:ignore
332
- log_lock_try: config['log_lock_try'], # steep:ignore
333
- instrumenter: config['instrumenter'], # steep:ignore
331
+ detailed_acq_timeout_error: config['detailed_acq_timeout_error'],
332
+ logger: config['logger'],
333
+ log_lock_try: config['log_lock_try'],
334
+ instrumenter: config['instrumenter'],
334
335
  instrument: nil,
335
- log_sampling_enabled: config['log_sampling_enabled'], # steep:ignore
336
- log_sampling_percent: config['log_sampling_percent'], # steep:ignore
337
- log_sampler: config['log_sampler'], # steep:ignore
336
+ log_sampling_enabled: config['log_sampling_enabled'],
337
+ log_sampling_percent: config['log_sampling_percent'],
338
+ log_sampler: config['log_sampler'],
338
339
  log_sample_this: false,
339
- instr_sampling_enabled: config['instr_sampling_enabled'], # steep:ignore
340
- instr_sampling_percent: config['instr_sampling_percent'], # steep:ignore
341
- instr_sampler: config['instr_sampler'], # steep:ignore
340
+ instr_sampling_enabled: config['instr_sampling_enabled'],
341
+ instr_sampling_percent: config['instr_sampling_percent'],
342
+ instr_sampler: config['instr_sampler'],
342
343
  instr_sample_this: false,
343
344
  &block
344
345
  )
@@ -388,32 +389,32 @@ class RedisQueuedLocks::Client
388
389
  def lock_series( # steep:ignore
389
390
  *lock_names,
390
391
  detailed_result: false,
391
- ttl: config['default_lock_ttl'], # steep:ignore
392
- queue_ttl: config['default_queue_ttl'], # steep:ignore
393
- timeout: config['try_to_lock_timeout'], # steep:ignore
394
- timed: config['is_timed_by_default'], # steep:ignore
395
- retry_count: config['retry_count'], # steep:ignore
396
- retry_delay: config['retry_delay'], # steep:ignore
397
- retry_jitter: config['retry_jitter'], # steep:ignore
392
+ ttl: config['default_lock_ttl'],
393
+ queue_ttl: config['default_queue_ttl'],
394
+ timeout: config['try_to_lock_timeout'],
395
+ timed: config['is_timed_by_default'],
396
+ retry_count: config['retry_count'],
397
+ retry_delay: config['retry_delay'],
398
+ retry_jitter: config['retry_jitter'],
398
399
  raise_errors: false,
399
400
  fail_fast: false,
400
- conflict_strategy: config['default_conflict_strategy'], # steep:ignore
401
+ conflict_strategy: config['default_conflict_strategy'],
401
402
  read_write_mode: :write,
402
- access_strategy: config['default_access_strategy'], # steep:ignore
403
+ access_strategy: config['default_access_strategy'],
403
404
  identity: uniq_identity,
404
405
  meta: nil,
405
- detailed_acq_timeout_error: config['detailed_acq_timeout_error'], # steep:ignore
406
- logger: config['logger'], # steep:ignore
407
- log_lock_try: config['log_lock_try'], # steep:ignore
408
- instrumenter: config['instrumenter'], # steep:ignore
406
+ detailed_acq_timeout_error: config['detailed_acq_timeout_error'],
407
+ logger: config['logger'],
408
+ log_lock_try: config['log_lock_try'],
409
+ instrumenter: config['instrumenter'],
409
410
  instrument: nil,
410
- log_sampling_enabled: config['log_sampling_enabled'], # steep:ignore
411
- log_sampling_percent: config['log_sampling_percent'], # steep:ignore
412
- log_sampler: config['log_sampler'], # steep:ignore
411
+ log_sampling_enabled: config['log_sampling_enabled'],
412
+ log_sampling_percent: config['log_sampling_percent'],
413
+ log_sampler: config['log_sampler'],
413
414
  log_sample_this: false,
414
- instr_sampling_enabled: config['instr_sampling_enabled'], # steep:ignore
415
- instr_sampling_percent: config['instr_sampling_percent'], # steep:ignore
416
- instr_sampler: config['instr_sampler'], # steep:ignore
415
+ instr_sampling_enabled: config['instr_sampling_enabled'],
416
+ instr_sampling_percent: config['instr_sampling_percent'],
417
+ instr_sampler: config['instr_sampler'],
417
418
  instr_sample_this: false,
418
419
  &block
419
420
  )
@@ -464,31 +465,31 @@ class RedisQueuedLocks::Client
464
465
  def lock_series!( # steep:ignore
465
466
  *lock_names,
466
467
  detailed_result: false,
467
- ttl: config['default_lock_ttl'], # steep:ignore
468
- queue_ttl: config['default_queue_ttl'], # steep:ignore
469
- timeout: config['try_to_lock_timeout'], # steep:ignore
470
- timed: config['is_timed_by_default'], # steep:ignore
471
- retry_count: config['retry_count'], # steep:ignore
472
- retry_delay: config['retry_delay'], # steep:ignore
473
- retry_jitter: config['retry_jitter'], # steep:ignore
468
+ ttl: config['default_lock_ttl'],
469
+ queue_ttl: config['default_queue_ttl'],
470
+ timeout: config['try_to_lock_timeout'],
471
+ timed: config['is_timed_by_default'],
472
+ retry_count: config['retry_count'],
473
+ retry_delay: config['retry_delay'],
474
+ retry_jitter: config['retry_jitter'],
474
475
  fail_fast: false,
475
- conflict_strategy: config['default_conflict_strategy'], # steep:ignore
476
+ conflict_strategy: config['default_conflict_strategy'],
476
477
  read_write_mode: :write,
477
- access_strategy: config['default_access_strategy'], # steep:ignore
478
+ access_strategy: config['default_access_strategy'],
478
479
  identity: uniq_identity,
479
480
  meta: nil,
480
- detailed_acq_timeout_error: config['detailed_acq_timeout_error'], # steep:ignore
481
- logger: config['logger'], # steep:ignore
482
- log_lock_try: config['log_lock_try'], # steep:ignore
483
- instrumenter: config['instrumenter'], # steep:ignore
481
+ detailed_acq_timeout_error: config['detailed_acq_timeout_error'],
482
+ logger: config['logger'],
483
+ log_lock_try: config['log_lock_try'],
484
+ instrumenter: config['instrumenter'],
484
485
  instrument: nil,
485
- log_sampling_enabled: config['log_sampling_enabled'], # steep:ignore
486
- log_sampling_percent: config['log_sampling_percent'], # steep:ignore
487
- log_sampler: config['log_sampler'], # steep:ignore
486
+ log_sampling_enabled: config['log_sampling_enabled'],
487
+ log_sampling_percent: config['log_sampling_percent'],
488
+ log_sampler: config['log_sampler'],
488
489
  log_sample_this: false,
489
- instr_sampling_enabled: config['instr_sampling_enabled'], # steep:ignore
490
- instr_sampling_percent: config['instr_sampling_percent'], # steep:ignore
491
- instr_sampler: config['instr_sampler'], # steep:ignore
490
+ instr_sampling_enabled: config['instr_sampling_enabled'],
491
+ instr_sampling_percent: config['instr_sampling_percent'],
492
+ instr_sampler: config['instr_sampler'],
492
493
  instr_sample_this: false,
493
494
  &block
494
495
  )
@@ -533,31 +534,31 @@ class RedisQueuedLocks::Client
533
534
  # @version 1.13.0
534
535
  def lock!(
535
536
  lock_name,
536
- ttl: config['default_lock_ttl'], # steep:ignore
537
- queue_ttl: config['default_queue_ttl'], # steep:ignore
538
- timeout: config['try_to_lock_timeout'], # steep:ignore
539
- timed: config['is_timed_by_default'], # steep:ignore
540
- retry_count: config['retry_count'], # steep:ignore
541
- retry_delay: config['retry_delay'], # steep:ignore
542
- retry_jitter: config['retry_jitter'], # steep:ignore
537
+ ttl: config['default_lock_ttl'],
538
+ queue_ttl: config['default_queue_ttl'],
539
+ timeout: config['try_to_lock_timeout'],
540
+ timed: config['is_timed_by_default'],
541
+ retry_count: config['retry_count'],
542
+ retry_delay: config['retry_delay'],
543
+ retry_jitter: config['retry_jitter'],
543
544
  fail_fast: false,
544
- conflict_strategy: config['default_conflict_strategy'], # steep:ignore
545
+ conflict_strategy: config['default_conflict_strategy'],
545
546
  read_write_mode: :write,
546
- access_strategy: config['default_access_strategy'], # steep:ignore
547
+ access_strategy: config['default_access_strategy'],
547
548
  identity: uniq_identity,
548
- instrumenter: config['instrumenter'], # steep:ignore
549
+ instrumenter: config['instrumenter'],
549
550
  meta: nil,
550
- detailed_acq_timeout_error: config['detailed_acq_timeout_error'], # steep:ignore
551
- logger: config['logger'], # steep:ignore
552
- log_lock_try: config['log_lock_try'], # steep:ignore
551
+ detailed_acq_timeout_error: config['detailed_acq_timeout_error'],
552
+ logger: config['logger'],
553
+ log_lock_try: config['log_lock_try'],
553
554
  instrument: nil,
554
- log_sampling_enabled: config['log_sampling_enabled'], # steep:ignore
555
- log_sampling_percent: config['log_sampling_percent'], # steep:ignore
556
- log_sampler: config['log_sampler'], # steep:ignore
555
+ log_sampling_enabled: config['log_sampling_enabled'],
556
+ log_sampling_percent: config['log_sampling_percent'],
557
+ log_sampler: config['log_sampler'],
557
558
  log_sample_this: false,
558
- instr_sampling_enabled: config['instr_sampling_enabled'], # steep:ignore
559
- instr_sampling_percent: config['instr_sampling_percent'], # steep:ignore
560
- instr_sampler: config['instr_sampler'], # steep:ignore
559
+ instr_sampling_enabled: config['instr_sampling_enabled'],
560
+ instr_sampling_percent: config['instr_sampling_percent'],
561
+ instr_sampler: config['instr_sampler'],
561
562
  instr_sample_this: false,
562
563
  &block
563
564
  )
@@ -624,16 +625,16 @@ class RedisQueuedLocks::Client
624
625
  # @version 1.6.0
625
626
  def unlock(
626
627
  lock_name,
627
- logger: config['logger'], # steep:ignore
628
- instrumenter: config['instrumenter'], # steep:ignore
628
+ logger: config['logger'],
629
+ instrumenter: config['instrumenter'],
629
630
  instrument: nil,
630
- log_sampling_enabled: config['log_sampling_enabled'], # steep:ignore
631
- log_sampling_percent: config['log_sampling_percent'], # steep:ignore
632
- log_sampler: config['log_sampler'], # steep:ignore
631
+ log_sampling_enabled: config['log_sampling_enabled'],
632
+ log_sampling_percent: config['log_sampling_percent'],
633
+ log_sampler: config['log_sampler'],
633
634
  log_sample_this: false,
634
- instr_sampling_enabled: config['instr_sampling_enabled'], # steep:ignore
635
- instr_sampling_percent: config['instr_sampling_percent'], # steep:ignore
636
- instr_sampler: config['instr_sampler'], # steep:ignore
635
+ instr_sampling_enabled: config['instr_sampling_enabled'],
636
+ instr_sampling_percent: config['instr_sampling_percent'],
637
+ instr_sampler: config['instr_sampler'],
637
638
  instr_sample_this: false
638
639
  )
639
640
  RedisQueuedLocks::Acquirer::ReleaseLock.release_lock(
@@ -803,16 +804,16 @@ class RedisQueuedLocks::Client
803
804
  def extend_lock_ttl(
804
805
  lock_name,
805
806
  milliseconds,
806
- logger: config['logger'], # steep:ignore
807
- instrumenter: config['instrumenter'], # steep:ignore
807
+ logger: config['logger'],
808
+ instrumenter: config['instrumenter'],
808
809
  instrument: nil,
809
- log_sampling_enabled: config['log_sampling_enabled'], # steep:ignore
810
- log_sampling_percent: config['log_sampling_percent'], # steep:ignore
811
- log_sampler: config['log_sampler'], # steep:ignore
810
+ log_sampling_enabled: config['log_sampling_enabled'],
811
+ log_sampling_percent: config['log_sampling_percent'],
812
+ log_sampler: config['log_sampler'],
812
813
  log_sample_this: false,
813
- instr_sampling_enabled: config['instr_sampling_enabled'], # steep:ignore
814
- instr_sampling_percent: config['instr_sampling_percent'], # steep:ignore
815
- instr_sampler: config['instr_sampler'], # steep:ignore
814
+ instr_sampling_enabled: config['instr_sampling_enabled'],
815
+ instr_sampling_percent: config['instr_sampling_percent'],
816
+ instr_sampler: config['instr_sampler'],
816
817
  instr_sample_this: false
817
818
  )
818
819
  RedisQueuedLocks::Acquirer::ExtendLockTTL.extend_lock_ttl(
@@ -857,17 +858,17 @@ class RedisQueuedLocks::Client
857
858
  # @since 1.0.0
858
859
  # @version 1.6.0
859
860
  def clear_locks(
860
- batch_size: config['lock_release_batch_size'], # steep:ignore
861
- logger: config['logger'], # steep:ignore
862
- instrumenter: config['instrumenter'], # steep:ignore
861
+ batch_size: config['lock_release_batch_size'],
862
+ logger: config['logger'],
863
+ instrumenter: config['instrumenter'],
863
864
  instrument: nil,
864
- log_sampling_enabled: config['log_sampling_enabled'], # steep:ignore
865
- log_sampling_percent: config['log_sampling_percent'], # steep:ignore
866
- log_sampler: config['log_sampler'], # steep:ignore
865
+ log_sampling_enabled: config['log_sampling_enabled'],
866
+ log_sampling_percent: config['log_sampling_percent'],
867
+ log_sampler: config['log_sampler'],
867
868
  log_sample_this: false,
868
- instr_sampling_enabled: config['instr_sampling_enabled'], # steep:ignore
869
- instr_sampling_percent: config['instr_sampling_percent'], # steep:ignore
870
- instr_sampler: config['instr_sampler'], # steep:ignore
869
+ instr_sampling_enabled: config['instr_sampling_enabled'],
870
+ instr_sampling_percent: config['instr_sampling_percent'],
871
+ instr_sampler: config['instr_sampler'],
871
872
  instr_sample_this: false
872
873
  )
873
874
  RedisQueuedLocks::Acquirer::ReleaseAllLocks.release_all_locks(
@@ -944,18 +945,18 @@ class RedisQueuedLocks::Client
944
945
  def clear_locks_of(
945
946
  host_id:,
946
947
  acquirer_id:,
947
- lock_scan_size: config['clear_locks_of__lock_scan_size'], # steep:ignore
948
+ lock_scan_size: config['clear_locks_of__lock_scan_size'],
948
949
  queue_scan_size: config['clear_locks_of__queue_scan_size'], # steep:ingore
949
- logger: config['logger'], # steep:ignore
950
- instrumenter: config['instrumenter'], # steep:ignore
950
+ logger: config['logger'],
951
+ instrumenter: config['instrumenter'],
951
952
  instrument: nil,
952
- log_sampling_enabled: config['log_sampling_enabled'], # steep:ignore
953
- log_sampling_percent: config['log_sampling_percent'], # steep:ignore
954
- log_sampler: config['log_sampler'], # steep:ignore
953
+ log_sampling_enabled: config['log_sampling_enabled'],
954
+ log_sampling_percent: config['log_sampling_percent'],
955
+ log_sampler: config['log_sampler'],
955
956
  log_sample_this: false,
956
- instr_sampling_enabled: config['instr_sampling_enabled'], # steep:ignore
957
- instr_sampling_percent: config['instr_sampling_percent'], # steep:ignore
958
- instr_sampler: config['instr_sampler'], # steep:ignore
957
+ instr_sampling_enabled: config['instr_sampling_enabled'],
958
+ instr_sampling_percent: config['instr_sampling_percent'],
959
+ instr_sampler: config['instr_sampler'],
959
960
  instr_sample_this: false
960
961
  )
961
962
  RedisQueuedLocks::Acquirer::ReleaseLocksOf.release_locks_of(
@@ -1002,18 +1003,18 @@ class RedisQueuedLocks::Client
1002
1003
  # @api public
1003
1004
  # @since 1.14.0
1004
1005
  def clear_current_locks(
1005
- lock_scan_size: config['clear_locks_of__lock_scan_size'], # steep:ignore
1006
+ lock_scan_size: config['clear_locks_of__lock_scan_size'],
1006
1007
  queue_scan_size: config['clear_locks_of__queue_scan_size'], # steep:ingore
1007
- logger: config['logger'], # steep:ignore
1008
- instrumenter: config['instrumenter'], # steep:ignore
1008
+ logger: config['logger'],
1009
+ instrumenter: config['instrumenter'],
1009
1010
  instrument: nil,
1010
- log_sampling_enabled: config['log_sampling_enabled'], # steep:ignore
1011
- log_sampling_percent: config['log_sampling_percent'], # steep:ignore
1012
- log_sampler: config['log_sampler'], # steep:ignore
1011
+ log_sampling_enabled: config['log_sampling_enabled'],
1012
+ log_sampling_percent: config['log_sampling_percent'],
1013
+ log_sampler: config['log_sampler'],
1013
1014
  log_sample_this: false,
1014
- instr_sampling_enabled: config['instr_sampling_enabled'], # steep:ignore
1015
- instr_sampling_percent: config['instr_sampling_percent'], # steep:ignore
1016
- instr_sampler: config['instr_sampler'], # steep:ignore
1015
+ instr_sampling_enabled: config['instr_sampling_enabled'],
1016
+ instr_sampling_percent: config['instr_sampling_percent'],
1017
+ instr_sampler: config['instr_sampler'],
1017
1018
  instr_sample_this: false
1018
1019
  )
1019
1020
  clear_locks_of(
@@ -1055,7 +1056,7 @@ class RedisQueuedLocks::Client
1055
1056
  #
1056
1057
  # @api public
1057
1058
  # @since 1.0.0
1058
- def locks(scan_size: config['key_extraction_batch_size'], with_info: false) # steep:ignore
1059
+ def locks(scan_size: config['key_extraction_batch_size'], with_info: false)
1059
1060
  RedisQueuedLocks::Acquirer::Locks.locks(redis_client, scan_size:, with_info:)
1060
1061
  end
1061
1062
 
@@ -1086,7 +1087,7 @@ class RedisQueuedLocks::Client
1086
1087
  #
1087
1088
  # @api public
1088
1089
  # @since 1.0.0
1089
- def queues(scan_size: config['key_extraction_batch_size'], with_info: false) # steep:ignore
1090
+ def queues(scan_size: config['key_extraction_batch_size'], with_info: false)
1090
1091
  RedisQueuedLocks::Acquirer::Queues.queues(redis_client, scan_size:, with_info:)
1091
1092
  end
1092
1093
 
@@ -1097,7 +1098,7 @@ class RedisQueuedLocks::Client
1097
1098
  #
1098
1099
  # @api public
1099
1100
  # @since 1.0.0
1100
- def queues_info(scan_size: config['key_extraction_batch_size']) # steep:ignore
1101
+ def queues_info(scan_size: config['key_extraction_batch_size'])
1101
1102
  queues(scan_size:, with_info: true)
1102
1103
  end
1103
1104
 
@@ -1106,7 +1107,7 @@ class RedisQueuedLocks::Client
1106
1107
  #
1107
1108
  # @api public
1108
1109
  # @since 1.0.0
1109
- def keys(scan_size: config['key_extraction_batch_size']) # steep:ignore
1110
+ def keys(scan_size: config['key_extraction_batch_size'])
1110
1111
  RedisQueuedLocks::Acquirer::Keys.keys(redis_client, scan_size:)
1111
1112
  end
1112
1113
 
@@ -1135,18 +1136,18 @@ class RedisQueuedLocks::Client
1135
1136
  # @since 1.0.0
1136
1137
  # @version 1.6.0
1137
1138
  def clear_dead_requests(
1138
- dead_ttl: config['dead_request_ttl'], # steep:ignore
1139
- scan_size: config['lock_release_batch_size'], # steep:ignore
1140
- logger: config['logger'], # steep:ignore
1141
- instrumenter: config['instrumenter'], # steep:ignore
1139
+ dead_ttl: config['dead_request_ttl'],
1140
+ scan_size: config['lock_release_batch_size'],
1141
+ logger: config['logger'],
1142
+ instrumenter: config['instrumenter'],
1142
1143
  instrument: nil,
1143
- log_sampling_enabled: config['log_sampling_enabled'], # steep:ignore
1144
- log_sampling_percent: config['log_sampling_percent'], # steep:ignore
1145
- log_sampler: config['log_sampler'], # steep:ignore
1144
+ log_sampling_enabled: config['log_sampling_enabled'],
1145
+ log_sampling_percent: config['log_sampling_percent'],
1146
+ log_sampler: config['log_sampler'],
1146
1147
  log_sample_this: false,
1147
- instr_sampling_enabled: config['instr_sampling_enabled'], # steep:ignore
1148
- instr_sampling_percent: config['instr_sampling_percent'], # steep:ignore
1149
- instr_sampler: config['instr_sampler'], # steep:ignore
1148
+ instr_sampling_enabled: config['instr_sampling_enabled'],
1149
+ instr_sampling_percent: config['instr_sampling_percent'],
1150
+ instr_sampler: config['instr_sampler'],
1150
1151
  instr_sample_this: false
1151
1152
  )
1152
1153
  RedisQueuedLocks::Acquirer::ClearDeadRequests.clear_dead_requests(
@@ -6,29 +6,23 @@ module RedisQueuedLocks::Config::DSL
6
6
  # @api private
7
7
  # @since 1.13.0
8
8
  module ClassMethods
9
- # NOTE:
10
- # 1. Style/DefWithParentheses rubocop's cop incorrectly drops `()` from method definition
11
- # and breaks ruby code syntax. So this cop is disabled here;
12
- # 2. attr_reader is not used cuz `steep` can't understand it form inside the class where
9
+ # NOTE: attr_reader is not used cuz `steep` can't understand it form inside the class where
13
10
  # the current module is mixed;
14
11
  #
15
12
  # @return [Hash<String,Block>]
16
13
  #
17
14
  # @api private
18
15
  # @since 1.13.0
19
- def config_setters()= @config_setters
16
+ def config_setters = @config_setters
20
17
 
21
- # NOTE:
22
- # 1. Style/DefWithParentheses rubocop's cop incorrectly drops `()` from method definition
23
- # and breaks ruby code syntax. So this cop is disabled here;
24
- # 2. attr_reader is not used cuz `steep` can't understand it form inside the class where
18
+ # NOTE: attr_reader is not used cuz `steep` can't understand it form inside the class where
25
19
  # the current module is mixed;
26
20
  #
27
21
  # @return [Hash<String,Block>]
28
22
  #
29
23
  # @api private
30
24
  # @since 1.13.0
31
- def config_validators()= @config_validators
25
+ def config_validators = @config_validators
32
26
 
33
27
  # @param config_key [String]
34
28
  # @param validator [Block]