diff --git a/lib/puma/cluster/worker.rb b/lib/puma/cluster/worker.rb index daf7c486db..8060f75847 100644 --- a/lib/puma/cluster/worker.rb +++ b/lib/puma/cluster/worker.rb @@ -33,7 +33,7 @@ def run Signal.trap "SIGINT", "IGNORE" Signal.trap "SIGCHLD", "DEFAULT" - Thread.new do + Thread.new do Puma.set_thread_name "worker check pipe" IO.select [@check_pipe] log "! Detected parent died, dying" @@ -54,7 +54,14 @@ def run # things in shape before booting the app. @launcher.config.run_hooks :before_worker_boot, index, @launcher.events + begin server = @server ||= start_server + rescue Exception => e + log "! Unable to start worker" + log e.backtrace[0] + exit 1 + end + restart_server = Queue.new << true << false fork_worker = @options[:fork_worker] && index == 0