about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2018-12-29 21:07:16 +0000
committerEric Wong <e@80x24.org>2018-12-30 02:23:48 +0000
commitadd2edafb14f72788823af2707d457357f717983 (patch)
treee7487460b755c2168c564fa97616e01ce9693c8a
parent86ea6ed1417bfe731cadeced0f6c386cfc0e0894 (diff)
downloadyahns-add2edafb14f72788823af2707d457357f717983.tar.gz
Still not sure what's going on with the proxy_pass code,
but something in the Fdmap code is causing shutdowns to
take way longer than expected...
-rw-r--r--lib/yahns/server.rb13
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/yahns/server.rb b/lib/yahns/server.rb
index 128b894..2ad65a9 100644
--- a/lib/yahns/server.rb
+++ b/lib/yahns/server.rb
@@ -500,7 +500,18 @@ class Yahns::Server # :nodoc:
     if drop_acceptors[0] || fdmap.size > 0
       timeout = @shutdown_expire < Yahns.now ? -1 : @shutdown_timeout
       n = fdmap.desperate_expire(timeout)
-      return false if timeout == -1
+      return false if n == 0 # all done!
+
+      # FIXME: sometimes shutdowns take a long time when using proxy_pass
+      # Still not sure what's going on and it takes a while to reproduce..
+      if timeout == -1
+        @logger.error(
+"exiting on shutdown_timeout=#@shutdown_timeout #{fdmap.size} FD(s) remain"
+        )
+
+        system('lsof', '-n', '-p', "#$$") if RUBY_PLATFORM =~ /linux/
+        return false
+      end
 
       $0 = "yahns quitting, #{n} FD(s) remain"
       true