1
0
Fork 0
mirror of https://github.com/puma/puma.git synced 2022-11-09 13:48:40 -05:00

Don't persist before_fork hook in state file

This commit is contained in:
Sven Riedel 2015-12-10 09:01:47 +01:00
parent 81c2ccb6d4
commit c365f2d1fc
3 changed files with 36 additions and 6 deletions

View file

@ -25,6 +25,12 @@ module Puma
# Handles invoke a Puma::Server in a command line style.
#
class CLI
KEYS_NOT_TO_PERSIST_IN_STATE = [
:logger, :lowlevel_error_handler,
:before_worker_shutdown, :before_worker_boot, :before_worker_fork,
:after_worker_boot, :before_fork, :on_restart
]
# Create a new CLI object using +argv+ as the command line
# arguments.
#
@ -108,12 +114,7 @@ module Puma
state = { 'pid' => Process.pid }
cfg = @config.dup
[
:logger,
:before_worker_shutdown, :before_worker_boot, :before_worker_fork,
:after_worker_boot,
:on_restart, :lowlevel_error_handler
].each { |k| cfg.options.delete(k) }
KEYS_NOT_TO_PERSIST_IN_STATE.each { |k| cfg.options.delete(k) }
state['config'] = cfg
require 'yaml'

View file

@ -0,0 +1,14 @@
pidfile "t3-pid"
workers 3
on_worker_boot do |index|
File.open("t3-worker-#{index}-pid", "w") { |f| f.puts Process.pid }
end
before_fork { 1 }
on_worker_shutdown { 1 }
on_worker_boot { 1 }
on_worker_fork { 1 }
on_restart { 1 }
after_worker_boot { 1 }
lowlevel_error_handler { 1 }

View file

@ -147,6 +147,21 @@ class TestCLI < Test::Unit::TestCase
assert_equal url, data["config"].options[:control_url]
end
def test_state_file_callback_filtering
cli = Puma::CLI.new [ "--config", "test/config/state_file_testing_config.rb",
"--state", @tmp_path ]
cli.send( :parse_options )
cli.write_state
data = nil
assert_nothing_raised do
data = YAML.load_file( @tmp_path )
end
keys_not_stripped = data.keys & Puma::CLI::KEYS_NOT_TO_PERSIST_IN_STATE
assert_empty keys_not_stripped
end
def test_load_path
cli = Puma::CLI.new ["--include", 'foo/bar']
cli.send(:parse_options)