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.
- checksums.yaml +4 -4
- data/.claude/project-overview.md +205 -0
- data/.claude/rules/acquirer.md +61 -0
- data/.claude/rules/arguments.md +59 -0
- data/.claude/rules/logic.md +57 -0
- data/.claude/rules/swarm.md +119 -0
- data/.claude/rules/tests.md +42 -0
- data/.claude/rules/type-checking.md +42 -0
- data/.claude/rules/visitors.md +64 -0
- data/.rubocop.rbs.yml +31 -0
- data/.rubocop.yml +3 -3
- data/.ruby-version +1 -1
- data/CHANGELOG.md +18 -0
- data/CLAUDE.md +31 -0
- data/README.md +19 -3
- data/Rakefile +31 -2
- data/github_ci/.keep +0 -0
- data/lib/redis_queued_locks/acquirer/acquire_lock/delay_execution.rb +2 -2
- data/lib/redis_queued_locks/acquirer/acquire_lock/try_to_lock.rb +1 -4
- data/lib/redis_queued_locks/acquirer/acquire_lock/yield_expire.rb +1 -1
- data/lib/redis_queued_locks/acquirer/acquire_lock.rb +0 -4
- data/lib/redis_queued_locks/acquirer/lock_series_poc/instr_visitor.rb +0 -2
- data/lib/redis_queued_locks/acquirer/lock_series_poc/log_visitor.rb +0 -1
- data/lib/redis_queued_locks/acquirer/lock_series_poc.rb +0 -2
- data/lib/redis_queued_locks/client.rb +145 -144
- data/lib/redis_queued_locks/config/dsl.rb +4 -10
- data/lib/redis_queued_locks/swarm/flush_zombies.rb +8 -6
- data/lib/redis_queued_locks/swarm/supervisor.rb +1 -1
- data/lib/redis_queued_locks/swarm/swarm_element/isolated.rb +166 -44
- data/lib/redis_queued_locks/swarm/swarm_element/threaded.rb +45 -47
- data/lib/redis_queued_locks/version.rb +2 -2
- data/redis_queued_locks.gemspec +1 -1
- data/sig/redis_queued_locks/swarm/flush_zombies.rbs +1 -1
- data/sig/redis_queued_locks/swarm/swarm_element/isolated.rbs +13 -5
- data/sig/redis_queued_locks/swarm/swarm_element/threaded.rbs +6 -6
- metadata +14 -5
- data/github_ci/ruby3.3.gemfile +0 -17
- 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'])
|
|
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'],
|
|
112
|
-
lock_scan_size: config['swarm.flush_zombies.zombie_lock_scan_size'],
|
|
113
|
-
queue_scan_size: config['swarm.flush_zombies.zombie_queue_scan_size']
|
|
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'],
|
|
126
|
-
lock_scan_size: config['swarm.flush_zombies.zombie_lock_scan_size']
|
|
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'],
|
|
139
|
-
lock_scan_size: config['swarm.flush_zombies.zombie_lock_scan_size']
|
|
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'])
|
|
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'],
|
|
164
|
-
lock_scan_size: config['swarm.flush_zombies.
|
|
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'],
|
|
317
|
-
queue_ttl: config['default_queue_ttl'],
|
|
318
|
-
timeout: config['try_to_lock_timeout'],
|
|
319
|
-
timed: config['is_timed_by_default'],
|
|
320
|
-
retry_count: config['retry_count'],
|
|
321
|
-
retry_delay: config['retry_delay'],
|
|
322
|
-
retry_jitter: config['retry_jitter'],
|
|
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'],
|
|
326
|
+
conflict_strategy: config['default_conflict_strategy'],
|
|
326
327
|
read_write_mode: :write,
|
|
327
|
-
access_strategy: config['default_access_strategy'],
|
|
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'],
|
|
331
|
-
logger: config['logger'],
|
|
332
|
-
log_lock_try: config['log_lock_try'],
|
|
333
|
-
instrumenter: config['instrumenter'],
|
|
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'],
|
|
336
|
-
log_sampling_percent: config['log_sampling_percent'],
|
|
337
|
-
log_sampler: config['log_sampler'],
|
|
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'],
|
|
340
|
-
instr_sampling_percent: config['instr_sampling_percent'],
|
|
341
|
-
instr_sampler: config['instr_sampler'],
|
|
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'],
|
|
392
|
-
queue_ttl: config['default_queue_ttl'],
|
|
393
|
-
timeout: config['try_to_lock_timeout'],
|
|
394
|
-
timed: config['is_timed_by_default'],
|
|
395
|
-
retry_count: config['retry_count'],
|
|
396
|
-
retry_delay: config['retry_delay'],
|
|
397
|
-
retry_jitter: config['retry_jitter'],
|
|
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'],
|
|
401
|
+
conflict_strategy: config['default_conflict_strategy'],
|
|
401
402
|
read_write_mode: :write,
|
|
402
|
-
access_strategy: config['default_access_strategy'],
|
|
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'],
|
|
406
|
-
logger: config['logger'],
|
|
407
|
-
log_lock_try: config['log_lock_try'],
|
|
408
|
-
instrumenter: config['instrumenter'],
|
|
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'],
|
|
411
|
-
log_sampling_percent: config['log_sampling_percent'],
|
|
412
|
-
log_sampler: config['log_sampler'],
|
|
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'],
|
|
415
|
-
instr_sampling_percent: config['instr_sampling_percent'],
|
|
416
|
-
instr_sampler: config['instr_sampler'],
|
|
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'],
|
|
468
|
-
queue_ttl: config['default_queue_ttl'],
|
|
469
|
-
timeout: config['try_to_lock_timeout'],
|
|
470
|
-
timed: config['is_timed_by_default'],
|
|
471
|
-
retry_count: config['retry_count'],
|
|
472
|
-
retry_delay: config['retry_delay'],
|
|
473
|
-
retry_jitter: config['retry_jitter'],
|
|
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'],
|
|
476
|
+
conflict_strategy: config['default_conflict_strategy'],
|
|
476
477
|
read_write_mode: :write,
|
|
477
|
-
access_strategy: config['default_access_strategy'],
|
|
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'],
|
|
481
|
-
logger: config['logger'],
|
|
482
|
-
log_lock_try: config['log_lock_try'],
|
|
483
|
-
instrumenter: config['instrumenter'],
|
|
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'],
|
|
486
|
-
log_sampling_percent: config['log_sampling_percent'],
|
|
487
|
-
log_sampler: config['log_sampler'],
|
|
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'],
|
|
490
|
-
instr_sampling_percent: config['instr_sampling_percent'],
|
|
491
|
-
instr_sampler: config['instr_sampler'],
|
|
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'],
|
|
537
|
-
queue_ttl: config['default_queue_ttl'],
|
|
538
|
-
timeout: config['try_to_lock_timeout'],
|
|
539
|
-
timed: config['is_timed_by_default'],
|
|
540
|
-
retry_count: config['retry_count'],
|
|
541
|
-
retry_delay: config['retry_delay'],
|
|
542
|
-
retry_jitter: config['retry_jitter'],
|
|
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'],
|
|
545
|
+
conflict_strategy: config['default_conflict_strategy'],
|
|
545
546
|
read_write_mode: :write,
|
|
546
|
-
access_strategy: config['default_access_strategy'],
|
|
547
|
+
access_strategy: config['default_access_strategy'],
|
|
547
548
|
identity: uniq_identity,
|
|
548
|
-
instrumenter: config['instrumenter'],
|
|
549
|
+
instrumenter: config['instrumenter'],
|
|
549
550
|
meta: nil,
|
|
550
|
-
detailed_acq_timeout_error: config['detailed_acq_timeout_error'],
|
|
551
|
-
logger: config['logger'],
|
|
552
|
-
log_lock_try: config['log_lock_try'],
|
|
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'],
|
|
555
|
-
log_sampling_percent: config['log_sampling_percent'],
|
|
556
|
-
log_sampler: config['log_sampler'],
|
|
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'],
|
|
559
|
-
instr_sampling_percent: config['instr_sampling_percent'],
|
|
560
|
-
instr_sampler: config['instr_sampler'],
|
|
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'],
|
|
628
|
-
instrumenter: config['instrumenter'],
|
|
628
|
+
logger: config['logger'],
|
|
629
|
+
instrumenter: config['instrumenter'],
|
|
629
630
|
instrument: nil,
|
|
630
|
-
log_sampling_enabled: config['log_sampling_enabled'],
|
|
631
|
-
log_sampling_percent: config['log_sampling_percent'],
|
|
632
|
-
log_sampler: config['log_sampler'],
|
|
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'],
|
|
635
|
-
instr_sampling_percent: config['instr_sampling_percent'],
|
|
636
|
-
instr_sampler: config['instr_sampler'],
|
|
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'],
|
|
807
|
-
instrumenter: config['instrumenter'],
|
|
807
|
+
logger: config['logger'],
|
|
808
|
+
instrumenter: config['instrumenter'],
|
|
808
809
|
instrument: nil,
|
|
809
|
-
log_sampling_enabled: config['log_sampling_enabled'],
|
|
810
|
-
log_sampling_percent: config['log_sampling_percent'],
|
|
811
|
-
log_sampler: config['log_sampler'],
|
|
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'],
|
|
814
|
-
instr_sampling_percent: config['instr_sampling_percent'],
|
|
815
|
-
instr_sampler: config['instr_sampler'],
|
|
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'],
|
|
861
|
-
logger: config['logger'],
|
|
862
|
-
instrumenter: config['instrumenter'],
|
|
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'],
|
|
865
|
-
log_sampling_percent: config['log_sampling_percent'],
|
|
866
|
-
log_sampler: config['log_sampler'],
|
|
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'],
|
|
869
|
-
instr_sampling_percent: config['instr_sampling_percent'],
|
|
870
|
-
instr_sampler: config['instr_sampler'],
|
|
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'],
|
|
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'],
|
|
950
|
-
instrumenter: config['instrumenter'],
|
|
950
|
+
logger: config['logger'],
|
|
951
|
+
instrumenter: config['instrumenter'],
|
|
951
952
|
instrument: nil,
|
|
952
|
-
log_sampling_enabled: config['log_sampling_enabled'],
|
|
953
|
-
log_sampling_percent: config['log_sampling_percent'],
|
|
954
|
-
log_sampler: config['log_sampler'],
|
|
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'],
|
|
957
|
-
instr_sampling_percent: config['instr_sampling_percent'],
|
|
958
|
-
instr_sampler: config['instr_sampler'],
|
|
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'],
|
|
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'],
|
|
1008
|
-
instrumenter: config['instrumenter'],
|
|
1008
|
+
logger: config['logger'],
|
|
1009
|
+
instrumenter: config['instrumenter'],
|
|
1009
1010
|
instrument: nil,
|
|
1010
|
-
log_sampling_enabled: config['log_sampling_enabled'],
|
|
1011
|
-
log_sampling_percent: config['log_sampling_percent'],
|
|
1012
|
-
log_sampler: config['log_sampler'],
|
|
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'],
|
|
1015
|
-
instr_sampling_percent: config['instr_sampling_percent'],
|
|
1016
|
-
instr_sampler: config['instr_sampler'],
|
|
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)
|
|
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)
|
|
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'])
|
|
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'])
|
|
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'],
|
|
1139
|
-
scan_size: config['lock_release_batch_size'],
|
|
1140
|
-
logger: config['logger'],
|
|
1141
|
-
instrumenter: config['instrumenter'],
|
|
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'],
|
|
1144
|
-
log_sampling_percent: config['log_sampling_percent'],
|
|
1145
|
-
log_sampler: config['log_sampler'],
|
|
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'],
|
|
1148
|
-
instr_sampling_percent: config['instr_sampling_percent'],
|
|
1149
|
-
instr_sampler: config['instr_sampler'],
|
|
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
|
|
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
|
|
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
|
-
# @
|
|
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.
|
|
107
|
-
def
|
|
108
|
-
|
|
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),
|
|
92
|
+
state: (visor == nil) ? 'non_initialized' : thread_state(visor),
|
|
93
93
|
observable: (observable == nil) ? 'non_initialized' : 'initialized'
|
|
94
94
|
}
|
|
95
95
|
end
|