diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/yahns/server.rb | 13 |
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 |