diff options
Diffstat (limited to 'www-servers/puma/files/puma-3.12.1-ruby26-waitpid.patch')
-rw-r--r-- | www-servers/puma/files/puma-3.12.1-ruby26-waitpid.patch | 47 |
1 files changed, 0 insertions, 47 deletions
diff --git a/www-servers/puma/files/puma-3.12.1-ruby26-waitpid.patch b/www-servers/puma/files/puma-3.12.1-ruby26-waitpid.patch deleted file mode 100644 index b28c69fa4d4b..000000000000 --- a/www-servers/puma/files/puma-3.12.1-ruby26-waitpid.patch +++ /dev/null @@ -1,47 +0,0 @@ -From b94c3e34faff024a5b1930af36e4d64bd6dde57f Mon Sep 17 00:00:00 2001 -From: MSP-Greg <MSP-Greg@users.noreply.github.com> -Date: Fri, 15 Mar 2019 17:26:20 -0500 -Subject: [PATCH] Puma::Cluster#stop_workers - use WNOHANG with nil return - tests - -Ruby 2.6 introduced a bug that affects worker shutdown (waitpid). - -Added code using Process::WNOHANG along with needed logic. Adds worker status (via $?) and total shutdown time to log. - -Co-authored-by: MSP-Greg <greg.mpls@gmail.com> -Co-authored-by: guilleiguaran <guilleiguaran@gmail.com> ---- - lib/puma/cluster.rb | 20 +++++++++++++++++++- - 1 file changed, 19 insertions(+), 1 deletion(-) - -diff --git a/lib/puma/cluster.rb b/lib/puma/cluster.rb -index 93d65131..0879c96c 100644 ---- a/lib/puma/cluster.rb -+++ b/lib/puma/cluster.rb -@@ -37,7 +37,25 @@ def stop_workers - @workers.each { |x| x.term } - - begin -- @workers.each { |w| Process.waitpid(w.pid) } -+ if RUBY_VERSION < '2.6' -+ @workers.each { |w| Process.waitpid(w.pid) } -+ else -+ # below code is for a bug in Ruby 2.6+, above waitpid call hangs -+ t_st = Process.clock_gettime(Process::CLOCK_MONOTONIC) -+ pids = @workers.map(&:pid) -+ loop do -+ pids.reject! do |w_pid| -+ if Process.waitpid(w_pid, Process::WNOHANG) -+ log " worker status: #{$?}" -+ true -+ end -+ end -+ break if pids.empty? -+ sleep 0.5 -+ end -+ t_end = Process.clock_gettime(Process::CLOCK_MONOTONIC) -+ log format(" worker shutdown time: %6.2f", t_end - t_st) -+ end - rescue Interrupt - log "! Cancelled waiting for workers" - end |