redis_queued_locks 1.16.2 → 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 (38) 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 +18 -0
  14. data/CLAUDE.md +31 -0
  15. data/README.md +19 -3
  16. data/Rakefile +31 -2
  17. data/github_ci/.keep +0 -0
  18. data/lib/redis_queued_locks/acquirer/acquire_lock/delay_execution.rb +2 -2
  19. data/lib/redis_queued_locks/acquirer/acquire_lock/try_to_lock.rb +1 -4
  20. data/lib/redis_queued_locks/acquirer/acquire_lock/yield_expire.rb +1 -1
  21. data/lib/redis_queued_locks/acquirer/acquire_lock.rb +0 -4
  22. data/lib/redis_queued_locks/acquirer/lock_series_poc/instr_visitor.rb +0 -2
  23. data/lib/redis_queued_locks/acquirer/lock_series_poc/log_visitor.rb +0 -1
  24. data/lib/redis_queued_locks/acquirer/lock_series_poc.rb +0 -2
  25. data/lib/redis_queued_locks/client.rb +145 -144
  26. data/lib/redis_queued_locks/config/dsl.rb +4 -10
  27. data/lib/redis_queued_locks/swarm/flush_zombies.rb +8 -6
  28. data/lib/redis_queued_locks/swarm/supervisor.rb +1 -1
  29. data/lib/redis_queued_locks/swarm/swarm_element/isolated.rb +166 -44
  30. data/lib/redis_queued_locks/swarm/swarm_element/threaded.rb +45 -47
  31. data/lib/redis_queued_locks/version.rb +2 -2
  32. data/redis_queued_locks.gemspec +1 -1
  33. data/sig/redis_queued_locks/swarm/flush_zombies.rbs +1 -1
  34. data/sig/redis_queued_locks/swarm/swarm_element/isolated.rbs +13 -5
  35. data/sig/redis_queued_locks/swarm/swarm_element/threaded.rbs +6 -6
  36. metadata +14 -5
  37. data/github_ci/ruby3.3.gemfile +0 -17
  38. data/github_ci/ruby3.3.gemfile.lock +0 -216
@@ -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]
@@ -100,19 +100,21 @@ class RedisQueuedLocks::Swarm::FlushZombies < RedisQueuedLocks::Swarm::SwarmElem
100
100
  rql_client.config['swarm.flush_zombies.enabled_for_swarm']
101
101
  end
102
102
 
103
- # @return [void]
103
+ # @param swarm_element_results_port [Ractor::Port] Results port of the main Ractor.
104
+ # @return [Ractor]
104
105
  #
105
106
  # @api private
106
- # @since 1.9.0
107
- def swarm!
108
- @swarm_element = Ractor.new(
107
+ # @since 1.17.0
108
+ def spawn_swarm_element!(swarm_element_results_port)
109
+ Ractor.new(
110
+ swarm_element_results_port,
109
111
  rql_client.config.slice('swarm.flush_zombies.redis_config'),
110
112
  rql_client.config['swarm.flush_zombies.zombie_ttl'],
111
113
  rql_client.config['swarm.flush_zombies.zombie_lock_scan_size'],
112
114
  rql_client.config['swarm.flush_zombies.zombie_queue_scan_size'],
113
115
  rql_client.config['swarm.flush_zombies.zombie_flush_period']
114
- ) do |rc, z_ttl, z_lss, z_qss, z_fl_prd|
115
- RedisQueuedLocks::Swarm::FlushZombies.swarm_loop do
116
+ ) do |r_res_p, rc, z_ttl, z_lss, z_qss, z_fl_prd|
117
+ RedisQueuedLocks::Swarm::FlushZombies.swarm_loop(r_res_p) do
116
118
  Thread.new do
117
119
  redis_client = RedisQueuedLocks::Swarm::RedisClientBuilder.build(
118
120
  pooled: rc['pooled'],
@@ -89,7 +89,7 @@ class RedisQueuedLocks::Swarm::Supervisor
89
89
 
90
90
  {
91
91
  running: running?,
92
- state: (visor == nil) ? 'non_initialized' : thread_state(visor), # steep:ignore
92
+ state: (visor == nil) ? 'non_initialized' : thread_state(visor),
93
93
  observable: (observable == nil) ? 'non_initialized' : 'initialized'
94
94
  }
95
95
  end