Skip to content

Commit ee5fcc6

Browse files
committed
Use a separate config option for concurrency maintenance task interval
1 parent 93eb7f8 commit ee5fcc6

File tree

3 files changed

+6
-4
lines changed

3 files changed

+6
-4
lines changed

lib/solid_queue/configuration.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ class Configuration
1010

1111
SCHEDULER_DEFAULTS = {
1212
batch_size: 500,
13-
polling_interval: 300
13+
polling_interval: 300,
14+
concurrency_maintenance_interval: 600
1415
}
1516

1617
def initialize(mode: :work, load_from: nil)

lib/solid_queue/scheduler.rb

+3-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ module SolidQueue
44
class Scheduler
55
include Runner
66

7-
attr_accessor :batch_size, :polling_interval
7+
attr_accessor :batch_size, :polling_interval, :concurrency_maintenance_interval
88

99
set_callback :start, :before, :launch_concurrency_maintenance
1010
set_callback :shutdown, :before, :stop_concurrency_maintenance
@@ -14,6 +14,7 @@ def initialize(**options)
1414

1515
@batch_size = options[:batch_size]
1616
@polling_interval = options[:polling_interval]
17+
@concurrency_maintenance_interval = options[:concurrency_maintenance_interval]
1718
end
1819

1920
private
@@ -33,7 +34,7 @@ def run
3334
end
3435

3536
def launch_concurrency_maintenance
36-
@concurrency_maintenance_task = Concurrent::TimerTask.new(run_now: true, execution_interval: polling_interval) do
37+
@concurrency_maintenance_task = Concurrent::TimerTask.new(run_now: true, execution_interval: concurrency_maintenance_interval) do
3738
expire_semaphores
3839
unblock_blocked_executions
3940
end

test/integration/concurrency_controls_test.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class ConcurrencyControlsTest < ActiveSupport::TestCase
1010
@result = JobResult.create!(queue_name: "default", status: "seq: ")
1111

1212
default_worker = { queues: "default", polling_interval: 1, processes: 3, threads: 2 }
13-
scheduler = { polling_interval: 1, batch_size: 200 }
13+
scheduler = { polling_interval: 1, batch_size: 200, concurrency_maintenance_interval: 1 }
1414

1515
@pid = run_supervisor_as_fork(mode: :all, load_configuration_from: { workers: [ default_worker ], scheduler: scheduler })
1616

0 commit comments

Comments
 (0)