diff --git a/lib/solid_queue/log_subscriber.rb b/lib/solid_queue/log_subscriber.rb index 96fb19bf..e6cb8771 100644 --- a/lib/solid_queue/log_subscriber.rb +++ b/lib/solid_queue/log_subscriber.rb @@ -140,6 +140,12 @@ def immediate_termination(event) info formatted_event(event, action: "Supervisor terminated immediately", **event.payload.slice(:process_id, :supervisor_pid, :supervised_processes)) end + def supervisor_initialisation(event) + if event.payload.slice(:exception).any? + error formatted_event(event, action: "Supervisor failed to initialise", **event.payload.slice(:exception)) + end + end + def unhandled_signal_error(event) error formatted_event(event, action: "Received unhandled signal", **event.payload.slice(:signal)) end diff --git a/lib/solid_queue/supervisor.rb b/lib/solid_queue/supervisor.rb index 7d010593..2d917f2b 100644 --- a/lib/solid_queue/supervisor.rb +++ b/lib/solid_queue/supervisor.rb @@ -12,10 +12,12 @@ def start(**options) SolidQueue.supervisor = true configuration = Configuration.new(**options) - if configuration.valid? - new(configuration).tap(&:start) - else - abort configuration.errors.full_messages.join("\n") + "\nExiting..." + SolidQueue.instrument(:supervisor_initialisation, process: self) do + if configuration.valid? + new(configuration).tap(&:start) + else + abort configuration.errors.full_messages.join("\n") + "\nExiting..." + end end end end