Skip to content

Commit 034e6d3

Browse files
committed
Extract Processes::Poller concern to be used in Dispatcher and Worker
Also, remove the idle threads value from metadata, because it's useless.
1 parent 64cc58c commit 034e6d3

File tree

7 files changed

+49
-14
lines changed

7 files changed

+49
-14
lines changed

lib/solid_queue.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
require "solid_queue/processes/interruptible"
1111
require "solid_queue/processes/pidfile"
1212
require "solid_queue/processes/procline"
13+
require "solid_queue/processes/poller"
1314
require "solid_queue/processes/base"
1415
require "solid_queue/processes/runnable"
1516
require "solid_queue/signals"

lib/solid_queue/dispatcher.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
module SolidQueue
44
class Dispatcher < Processes::Base
5-
include Processes::Runnable
5+
include Processes::Runnable, Processes::Poller
66

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

99
set_callback :boot, :after, :launch_concurrency_maintenance
1010
set_callback :shutdown, :before, :stop_concurrency_maintenance
@@ -67,7 +67,7 @@ def initial_jitter
6767
end
6868

6969
def metadata
70-
super.merge(batch_size: batch_size, polling_interval: polling_interval)
70+
super.merge(batch_size: batch_size)
7171
end
7272
end
7373
end

lib/solid_queue/processes/poller.rb

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# frozen_string_literal: true
2+
3+
module SolidQueue::Processes
4+
module Poller
5+
extend ActiveSupport::Concern
6+
7+
included do
8+
attr_accessor :polling_interval
9+
end
10+
11+
private
12+
def with_polling_volume
13+
if SolidQueue.silence_polling?
14+
ActiveRecord::Base.logger.silence { yield }
15+
else
16+
yield
17+
end
18+
end
19+
20+
def metadata
21+
super.merge(polling_interval: polling_interval)
22+
end
23+
end
24+
end

lib/solid_queue/processes/runnable.rb

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -73,13 +73,5 @@ def all_work_completed?
7373
def running_inline?
7474
mode.inline?
7575
end
76-
77-
def with_polling_volume
78-
if SolidQueue.silence_polling?
79-
ActiveRecord::Base.logger.silence { yield }
80-
else
81-
yield
82-
end
83-
end
8476
end
8577
end

lib/solid_queue/worker.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
module SolidQueue
44
class Worker < Processes::Base
5-
include Processes::Runnable
5+
include Processes::Runnable, Processes::Poller
66

7-
attr_accessor :queues, :polling_interval, :pool
7+
attr_accessor :queues, :pool
88

99
def initialize(**options)
1010
options = options.dup.with_defaults(SolidQueue::Configuration::WORKER_DEFAULTS)
@@ -48,7 +48,7 @@ def all_work_completed?
4848
end
4949

5050
def metadata
51-
super.merge(queues: queues.join(","), thread_pool_size: pool.size, idle_threads: pool.idle_threads, polling_interval: polling_interval)
51+
super.merge(queues: queues.join(","), thread_pool_size: pool.size)
5252
end
5353
end
5454
end

test/unit/dispatcher_test.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,15 @@ class DispatcherTest < ActiveSupport::TestCase
1212
@dispatcher.stop
1313
end
1414

15+
test "dispatcher is registered as process" do
16+
@dispatcher.start
17+
wait_for_registered_processes(1, timeout: 1.second)
18+
19+
process = SolidQueue::Process.first
20+
assert_equal "Dispatcher", process.kind
21+
assert_equal({ "polling_interval" => 0.1, "batch_size" => 10 }, process.metadata)
22+
end
23+
1524
test "polling queries are logged" do
1625
log = StringIO.new
1726
old_logger, ActiveRecord::Base.logger = ActiveRecord::Base.logger, ActiveSupport::Logger.new(log)

test/unit/worker_test.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,15 @@ class WorkerTest < ActiveSupport::TestCase
1313
JobBuffer.clear
1414
end
1515

16+
test "worker is registered as process" do
17+
@worker.start
18+
wait_for_registered_processes(1, timeout: 1.second)
19+
20+
process = SolidQueue::Process.first
21+
assert_equal "Worker", process.kind
22+
assert_equal({ "queues" => "background", "polling_interval" => 0.2, "thread_pool_size" => 3 }, process.metadata)
23+
end
24+
1625
test "errors on claiming executions are reported via Rails error subscriber regardless of on_thread_error setting" do
1726
original_on_thread_error, SolidQueue.on_thread_error = SolidQueue.on_thread_error, nil
1827

0 commit comments

Comments
 (0)