Skip to content

Commit 530a50b

Browse files
committed
Include process_id on process instrumentation events when possible
1 parent fcb7e76 commit 530a50b

File tree

5 files changed

+15
-11
lines changed

5 files changed

+15
-11
lines changed

app/models/solid_queue/process.rb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,10 @@ class SolidQueue::Process < SolidQueue::Record
1212
after_destroy -> { claimed_executions.release_all }
1313

1414
def self.register(**attributes)
15-
SolidQueue.instrument :register_process, **attributes do
16-
create!(attributes.merge(last_heartbeat_at: Time.current))
15+
SolidQueue.instrument :register_process, **attributes do |payload|
16+
create!(attributes.merge(last_heartbeat_at: Time.current)).tap do |process|
17+
payload[:process_id] = process.id
18+
end
1719
end
1820
rescue Exception => error
1921
SolidQueue.instrument :register_process, **attributes.merge(error: error)

lib/solid_queue/log_subscriber.rb

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ def start_process(event)
6262

6363
attributes = {
6464
pid: process.pid,
65-
hostname: process.hostname
65+
hostname: process.hostname,
66+
process_id: process.process_id
6667
}.merge(process.metadata)
6768

6869
info formatted_event(event, action: "Started #{process.kind}", **attributes)
@@ -73,15 +74,16 @@ def shutdown_process(event)
7374

7475
attributes = {
7576
pid: process.pid,
76-
hostname: process.hostname
77+
hostname: process.hostname,
78+
process_id: process.process_id
7779
}.merge(process.metadata)
7880

7981
info formatted_event(event, action: "Shutdown #{process.kind}", **attributes)
8082
end
8183

8284
def register_process(event)
8385
process_kind = event.payload[:kind]
84-
attributes = event.payload.slice(:pid, :hostname)
86+
attributes = event.payload.slice(:pid, :hostname, :process_id)
8587

8688
if error = event.payload[:error]
8789
warn formatted_event(event, action: "Error registering #{process_kind}", **attributes.merge(error: formatted_error(error)))
@@ -118,7 +120,7 @@ def thread_error(event)
118120
end
119121

120122
def graceful_termination(event)
121-
attributes = event.payload.slice(:supervisor_pid, :supervised_processes)
123+
attributes = event.payload.slice(:process_id, :supervisor_pid, :supervised_processes)
122124

123125
if event.payload[:shutdown_timeout_exceeded]
124126
warn formatted_event(event, action: "Supervisor wasn't terminated gracefully - shutdown timeout exceeded", **attributes)
@@ -128,7 +130,7 @@ def graceful_termination(event)
128130
end
129131

130132
def immediate_termination(event)
131-
info formatted_event(event, action: "Supervisor terminated immediately", **event.payload.slice(:supervisor_pid, :supervised_processes))
133+
info formatted_event(event, action: "Supervisor terminated immediately", **event.payload.slice(:process_id, :supervisor_pid, :supervised_processes))
132134
end
133135

134136
def unhandled_signal_error(event)

lib/solid_queue/processes/registrable.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ module Registrable
1212
end
1313

1414
def process_id
15-
process.id
15+
process&.id
1616
end
1717

1818
private

lib/solid_queue/supervisor/fork_supervisor.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def start_process(configured_process)
4444
end
4545

4646
def terminate_gracefully
47-
SolidQueue.instrument(:graceful_termination, supervisor_pid: ::Process.pid, supervised_processes: forks.keys) do |payload|
47+
SolidQueue.instrument(:graceful_termination, process_id: process_id, supervisor_pid: ::Process.pid, supervised_processes: forks.keys) do |payload|
4848
term_forks
4949

5050
Timer.wait_until(SolidQueue.shutdown_timeout, -> { all_forks_terminated? }) do
@@ -59,7 +59,7 @@ def terminate_gracefully
5959
end
6060

6161
def terminate_immediately
62-
SolidQueue.instrument(:immediate_termination, supervisor_pid: ::Process.pid, supervised_processes: forks.keys) do
62+
SolidQueue.instrument(:immediate_termination, process_id: process_id, supervisor_pid: ::Process.pid, supervised_processes: forks.keys) do
6363
quit_forks
6464
end
6565
end

test/integration/instrumentation_test.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ class InstrumentationTest < ActiveSupport::TestCase
8888

8989
assert_equal 2, events.size
9090
register_event, deregister_event = events
91-
assert_event register_event, "register_process", kind: "Worker", pid: ::Process.pid
91+
assert_event register_event, "register_process", kind: "Worker", pid: ::Process.pid, process_id: process.id
9292
assert_event deregister_event, "deregister_process", process: process, pruned: false, claimed_size: 1
9393
end
9494

0 commit comments

Comments
 (0)