diff --git a/lib/datadog/di/probe_notifier_worker.rb b/lib/datadog/di/probe_notifier_worker.rb index 0e497c870ec..179c854b764 100644 --- a/lib/datadog/di/probe_notifier_worker.rb +++ b/lib/datadog/di/probe_notifier_worker.rb @@ -36,6 +36,7 @@ def initialize(settings, transport, logger, telemetry: nil) @sleep_remaining = nil @wake_scheduled = false @thread = nil + @pid = nil @flush = 0 end @@ -44,7 +45,7 @@ def initialize(settings, transport, logger, telemetry: nil) attr_reader :telemetry def start - return if @thread + return if @thread && @pid == Process.pid @thread = Thread.new do loop do # TODO If stop is requested, we stop immediately without @@ -86,6 +87,7 @@ def start wake.wait(more ? min_send_interval : nil) end end + @pid = Process.pid end # Stops the background thread. @@ -200,6 +202,10 @@ def io_in_progress? wake.signal end end + + # Worker could be not running if the process forked - check and + # start it again in this case. + start end # Determine how much longer the worker thread should sleep