class ServerEngine::MultiProcessServer::WorkerMonitor
Attributes
exitstatus[R]
Public Class Methods
new(worker, wid, pmon, reload_signal = Signals::RELOAD, unrecoverable_exit_codes: [])
click to toggle source
# File lib/serverengine/multi_process_server.rb, line 100 def initialize(worker, wid, pmon, reload_signal = Signals::RELOAD, unrecoverable_exit_codes: []) @worker = worker @wid = wid @pmon = pmon @reload_signal = reload_signal @unrecoverable_exit_codes = unrecoverable_exit_codes @unrecoverable_exit = false @exitstatus = nil end
Public Instance Methods
alive?()
click to toggle source
# File lib/serverengine/multi_process_server.rb, line 141 def alive? return false unless @pmon if stat = @pmon.try_join if @stop @worker.logger.info "Worker #{@wid} finished with #{ServerEngine.format_join_status(stat)}" else @worker.logger.error "Worker #{@wid} finished unexpectedly with #{ServerEngine.format_join_status(stat)}" end if stat.is_a?(Process::Status) && stat.exited? && @unrecoverable_exit_codes.include?(stat.exitstatus) @unrecoverable_exit = true @exitstatus = stat.exitstatus end @pmon = nil return false else return true end end
join()
click to toggle source
# File lib/serverengine/multi_process_server.rb, line 136 def join @pmon.join if @pmon nil end
recoverable?()
click to toggle source
# File lib/serverengine/multi_process_server.rb, line 161 def recoverable? !@unrecoverable_exit end
send_command(command)
click to toggle source
# File lib/serverengine/multi_process_server.rb, line 132 def send_command(command) @pmon.send_command(command) if @pmon end
send_reload()
click to toggle source
# File lib/serverengine/multi_process_server.rb, line 122 def send_reload return nil unless @pmon if @pmon.command_sender_pipe send_command("RELOAD\n") else @pmon.send_signal(@reload_signal) end nil end
send_stop(stop_graceful)
click to toggle source
# File lib/serverengine/multi_process_server.rb, line 112 def send_stop(stop_graceful) @stop = true if stop_graceful @pmon.start_graceful_stop! if @pmon else @pmon.start_immediate_stop! if @pmon end nil end