Skip to content

Commit 16d32cb

Browse files
committed
Spare a query to claimed_executions when deregistering a dispatcher or supervisor
They don't claim executions, so no need to include that in the event.
1 parent e93e23d commit 16d32cb

File tree

4 files changed

+24
-3
lines changed

4 files changed

+24
-3
lines changed

app/models/solid_queue/process.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ def heartbeat
2424
end
2525

2626
def deregister(pruned: false)
27-
SolidQueue.instrument :deregister_process, process: self, pruned: pruned, claimed_size: claimed_executions.size do |payload|
27+
SolidQueue.instrument :deregister_process, process: self, pruned: pruned do |payload|
28+
payload[:claimed_size] = claimed_executions.size if claims_executions?
29+
2830
destroy!
2931
rescue Exception => error
3032
payload[:error] = error

lib/solid_queue/log_subscriber.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ def deregister_process(event)
100100
pid: process.pid,
101101
hostname: process.hostname,
102102
last_heartbeat_at: process.last_heartbeat_at.iso8601,
103-
claimed_size: process.claimed_executions.size,
103+
claimed_size: event.payload[:claimed_size],
104104
pruned: event.payload[:pruned]
105105
}
106106

test/integration/instrumentation_test.rb

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,25 @@ class InstrumentationTest < ActiveSupport::TestCase
9292
assert_event deregister_event, "deregister_process", process: process, pruned: false, claimed_size: 1
9393
end
9494

95+
test "starting and stopping a dispatcher emits register_process and deregister_process events" do
96+
process = nil
97+
98+
events = subscribed(/(register|deregister)_process\.solid_queue/) do
99+
dispatcher = SolidQueue::Dispatcher.new.tap(&:start)
100+
wait_for_registered_processes(1, timeout: 3.second)
101+
102+
process = SolidQueue::Process.last
103+
104+
dispatcher.stop
105+
wait_for_registered_processes(0, timeout: 3.second)
106+
end
107+
108+
assert_equal 2, events.size
109+
register_event, deregister_event = events
110+
assert_event register_event, "register_process", kind: "Dispatcher", pid: ::Process.pid, process_id: process.id
111+
assert_event deregister_event, "deregister_process", process: process, pruned: false
112+
end
113+
95114
test "pruning processes emit prune_processes and deregister_process events" do
96115
time = Time.now
97116
processes = 3.times.collect { |i| SolidQueue::Process.create!(kind: "Worker", supervisor_id: 42, pid: 10 + i, hostname: "localhost", last_heartbeat_at: time) }

test/unit/log_subscriber_test.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ def set_logger(logger)
5555
last_heartbeat_at = process.last_heartbeat_at.iso8601
5656

5757
attach_log_subscriber
58-
instrument "deregister_process.solid_queue", process: process, pruned: false
58+
instrument "deregister_process.solid_queue", process: process, pruned: false, claimed_size: 0
5959

6060
assert_match_logged :info, "Deregister Worker", "process_id: #{process.id}, pid: 42, hostname: \"localhost\", last_heartbeat_at: \"#{last_heartbeat_at}\", claimed_size: 0, pruned: false"
6161
end

0 commit comments

Comments
 (0)