mirror of
https://github.com/puma/puma.git
synced 2022-11-09 13:48:40 -05:00
Revert "Use SIGWINCH to print thread backtraces
Closes #2201
This reverts commit 3bf45fbf34
.
This commit is contained in:
parent
dec41f6ca3
commit
a6dcb506f2
4 changed files with 15 additions and 38 deletions
|
@ -8,7 +8,6 @@
|
||||||
* `GC.compact` is called before fork if available (#2093)
|
* `GC.compact` is called before fork if available (#2093)
|
||||||
* Add `requests_count` to workers stats. (#2106)
|
* Add `requests_count` to workers stats. (#2106)
|
||||||
* Increases maximum URI path length from 2048 to 8196 bytes (#2167)
|
* Increases maximum URI path length from 2048 to 8196 bytes (#2167)
|
||||||
* Sending SIGWINCH to any Puma worker now prints currently active threads and their backtraces (#2195)
|
|
||||||
* Force shutdown responses can be overridden by using the `lowlevel_error_handler` config (#2203)
|
* Force shutdown responses can be overridden by using the `lowlevel_error_handler` config (#2203)
|
||||||
|
|
||||||
* Deprecations, Removals and Breaking API Changes
|
* Deprecations, Removals and Breaking API Changes
|
||||||
|
@ -28,7 +27,7 @@
|
||||||
* Ensure `BUNDLE_GEMFILE` is unspecified in workers if unspecified in master when using `prune_bundler` (#2154)
|
* Ensure `BUNDLE_GEMFILE` is unspecified in workers if unspecified in master when using `prune_bundler` (#2154)
|
||||||
* Rescue and log exceptions in hooks defined by users (on_worker_boot, after_worker_fork etc) (#1551)
|
* Rescue and log exceptions in hooks defined by users (on_worker_boot, after_worker_fork etc) (#1551)
|
||||||
* Read directly from the socket in #read_and_drop to avoid raising further SSL errors (#2198)
|
* Read directly from the socket in #read_and_drop to avoid raising further SSL errors (#2198)
|
||||||
|
|
||||||
* Refactor
|
* Refactor
|
||||||
* Remove unused loader argument from Plugin initializer (#2095)
|
* Remove unused loader argument from Plugin initializer (#2095)
|
||||||
* Simplify `Configuration.random_token` and remove insecure fallback (#2102)
|
* Simplify `Configuration.random_token` and remove insecure fallback (#2102)
|
||||||
|
|
|
@ -40,7 +40,7 @@ Puma cluster responds to these signals:
|
||||||
- `USR1` restart workers in phases, a rolling restart. This will not reload configuration file.
|
- `USR1` restart workers in phases, a rolling restart. This will not reload configuration file.
|
||||||
- `HUP` reopen log files defined in stdout_redirect configuration parameter. If there is no stdout_redirect option provided it will behave like `INT`
|
- `HUP` reopen log files defined in stdout_redirect configuration parameter. If there is no stdout_redirect option provided it will behave like `INT`
|
||||||
- `INT` equivalent of sending Ctrl-C to cluster. Will attempt to finish then exit.
|
- `INT` equivalent of sending Ctrl-C to cluster. Will attempt to finish then exit.
|
||||||
- `WINCH` (`INFO` on BSD-based systems) prints a thread backtrace. This is useful for debugging infinite loops or slow performance.
|
- `CHLD`
|
||||||
|
|
||||||
## Callbacks order in case of different signals
|
## Callbacks order in case of different signals
|
||||||
|
|
||||||
|
|
|
@ -452,18 +452,13 @@ module Puma
|
||||||
log "*** SIGHUP not implemented, signal based logs reopening unavailable!"
|
log "*** SIGHUP not implemented, signal based logs reopening unavailable!"
|
||||||
end
|
end
|
||||||
|
|
||||||
begin
|
|
||||||
Signal.trap "SIGWINCH" do
|
|
||||||
log_backtrace
|
|
||||||
end
|
|
||||||
rescue Exception
|
|
||||||
log "*** SIGWINCH not implemented, signal based thread backtraces unavailable!"
|
|
||||||
end
|
|
||||||
|
|
||||||
begin
|
begin
|
||||||
unless Puma.jruby? # INFO in use by JVM already
|
unless Puma.jruby? # INFO in use by JVM already
|
||||||
Signal.trap "SIGINFO" do
|
Signal.trap "SIGINFO" do
|
||||||
log_backtrace
|
thread_status do |name, backtrace|
|
||||||
|
@events.log name
|
||||||
|
@events.log backtrace.map { |bt| " #{bt}" }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
rescue Exception
|
rescue Exception
|
||||||
|
@ -472,13 +467,6 @@ module Puma
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def log_backtrace
|
|
||||||
thread_status do |name, backtrace|
|
|
||||||
@events.log name
|
|
||||||
@events.log backtrace.map { |bt| " #{bt}" }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def require_rubygems_min_version!(min_version, feature)
|
def require_rubygems_min_version!(min_version, feature)
|
||||||
return if min_version <= Gem::Version.new(Gem::VERSION)
|
return if min_version <= Gem::Version.new(Gem::VERSION)
|
||||||
|
|
||||||
|
|
|
@ -33,16 +33,18 @@ class TestIntegrationCluster < TestIntegration
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_sigwinch_thread_print
|
|
||||||
skip_unless_signal_exist? :WINCH
|
|
||||||
|
|
||||||
signal_thread_backtrace :WINCH
|
|
||||||
end
|
|
||||||
|
|
||||||
def test_siginfo_thread_print
|
def test_siginfo_thread_print
|
||||||
skip_unless_signal_exist? :INFO
|
skip_unless_signal_exist? :INFO
|
||||||
|
|
||||||
signal_thread_backtrace :INFO
|
cli_server "-w #{WORKERS} -q test/rackup/hello.ru"
|
||||||
|
worker_pids = get_worker_pids
|
||||||
|
output = []
|
||||||
|
t = Thread.new { output << @server.readlines }
|
||||||
|
Process.kill :INFO, worker_pids.first
|
||||||
|
Process.kill :INT , @pid
|
||||||
|
t.join
|
||||||
|
|
||||||
|
assert_match "Thread: TID", output.join
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_usr2_restart
|
def test_usr2_restart
|
||||||
|
@ -133,18 +135,6 @@ class TestIntegrationCluster < TestIntegration
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def signal_thread_backtrace(signal)
|
|
||||||
cli_server "-w #{WORKERS} -q test/rackup/hello.ru"
|
|
||||||
worker_pids = get_worker_pids
|
|
||||||
output = []
|
|
||||||
t = Thread.new { output << @server.readlines }
|
|
||||||
Process.kill signal, worker_pids.first
|
|
||||||
Process.kill :INT , @pid
|
|
||||||
t.join
|
|
||||||
|
|
||||||
assert_match "Thread: TID", output.join
|
|
||||||
end
|
|
||||||
|
|
||||||
# Send requests 10 per second. Send 10, then :TERM server, then send another 30.
|
# Send requests 10 per second. Send 10, then :TERM server, then send another 30.
|
||||||
# No more than 10 should throw Errno::ECONNRESET.
|
# No more than 10 should throw Errno::ECONNRESET.
|
||||||
def term_closes_listeners(unix: false)
|
def term_closes_listeners(unix: false)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue