about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2014-05-02 23:15:58 +0000
committerEric Wong <e@80x24.org>2014-05-04 02:32:07 +0000
commit27ae210dde9228cfa96ea6b0f3a7e4047d3f70a4 (patch)
tree0ebab1db5910f4689ba635347d66c6d04d5eb3ae
parent9c333bf0c7db34694b8b78c7f03dd2ce89e32890 (diff)
downloadunicorn-27ae210dde9228cfa96ea6b0f3a7e4047d3f70a4.tar.gz
When daemonizing, it is possible for the grandparent to be
terminated by another process before the master can notify
it.  Do not abort the master in this case.

This may fix the following issue:

	https://github.com/kostya/eye/issues/49

(which I was notified of privately via email)
-rw-r--r--lib/unicorn/http_server.rb6
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/unicorn/http_server.rb b/lib/unicorn/http_server.rb
index 21cb9a1..a0ca302 100644
--- a/lib/unicorn/http_server.rb
+++ b/lib/unicorn/http_server.rb
@@ -272,7 +272,11 @@ class Unicorn::HttpServer
     proc_name 'master'
     logger.info "master process ready" # test_exec.rb relies on this message
     if @ready_pipe
-      @ready_pipe.syswrite($$.to_s)
+      begin
+        @ready_pipe.syswrite($$.to_s)
+      rescue => e
+        logger.warn("grandparent died too soon?: #{e.message} (#{e.class})")
+      end
       @ready_pipe = @ready_pipe.close rescue nil
     end
     begin