about summary refs log tree commit homepage
diff options
context:
space:
mode:
-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