From d0afe48696a643a5d7400b3db1d68cfd81e8cd38 Mon Sep 17 00:00:00 2001 From: Jeremy Evans Date: Mon, 13 Mar 2017 08:28:54 -0700 Subject: Don't pass a block for fork when forking workers This reduces the stack depth, making GC more efficient. --- lib/unicorn/http_server.rb | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/lib/unicorn/http_server.rb b/lib/unicorn/http_server.rb index a5bd2c4..40a154d 100644 --- a/lib/unicorn/http_server.rb +++ b/lib/unicorn/http_server.rb @@ -541,14 +541,12 @@ class Unicorn::HttpServer worker = Unicorn::Worker.new(worker_nr) before_fork.call(self, worker) - pid = if @worker_exec - worker_spawn(worker) - else - fork do - after_fork_internal - worker_loop(worker) - exit - end + pid = @worker_exec ? worker_spawn(worker) : fork + + unless pid + after_fork_internal + worker_loop(worker) + exit end @workers[pid] = worker -- cgit v1.2.3-24-ge0c7