class ServerEngine::MultiProcessServer

Public Class Methods

new(worker_module, load_config_proc={}, &block) click to toggle source
Calls superclass method
# File lib/serverengine/multi_process_server.rb, line 26
def initialize(worker_module, load_config_proc={}, &block)
  @pm = ProcessManager.new(
    auto_tick: false,
    graceful_kill_signal: Signals::GRACEFUL_STOP,
    immediate_kill_signal: Signals::IMMEDIATE_STOP,
    enable_heartbeat: true,
    auto_heartbeat: true,
    on_heartbeat_error: Proc.new do
      @logger.fatal "parent process unexpectedly terminated"
      exit 1
    end
  )

  super(worker_module, load_config_proc, &block)

  @worker_process_name = @config[:worker_process_name]
  @unrecoverable_exit_codes = @config.fetch(:unrecoverable_exit_codes, [])
end

Public Instance Methods

logger=(logger) click to toggle source
Calls superclass method
# File lib/serverengine/multi_process_server.rb, line 51
def logger=(logger)
  super
  @pm.logger = logger
end
run() click to toggle source
Calls superclass method
# File lib/serverengine/multi_process_server.rb, line 45
def run
  super
ensure
  @pm.close
end

Private Instance Methods

reload_config() click to toggle source
Calls superclass method
# File lib/serverengine/multi_process_server.rb, line 58
def reload_config
  super

  @chuser = @config[:worker_chuser]
  @chgroup = @config[:worker_chgroup]
  @chumask = @config[:worker_chumask]

  @pm.configure(@config, prefix: 'worker_')

  nil
end
start_worker(wid) click to toggle source
# File lib/serverengine/multi_process_server.rb, line 70
def start_worker(wid)
  w = create_worker(wid)

  w.before_fork
  begin
    pmon = @pm.fork do |t|
      $0 = @worker_process_name % [wid] if @worker_process_name
      w.install_signal_handlers

      Privilege.change(@chuser, @chgroup)
      File.umask(@chumask) if @chumask

      ## recreate the logger created at Server#main
      #create_logger

      w.main
    end

  ensure
    w.after_start
  end

  return WorkerMonitor.new(w, wid, pmon, unrecoverable_exit_codes: @unrecoverable_exit_codes)
end
wait_tick() click to toggle source
# File lib/serverengine/multi_process_server.rb, line 95
def wait_tick
  @pm.tick(0.5)
end