class Uc::Unicorn::GradualShutdown

Attributes

server[R]
worker[R]

Public Class Methods

new(server, worker) click to toggle source
# File lib/uc/unicorn/gradual_shutdown.rb, line 14
def initialize(server, worker)
  @server = server
  @worker = worker
end

Public Instance Methods

id() click to toggle source
# File lib/uc/unicorn/gradual_shutdown.rb, line 49
def id
  @id ||= (worker.nr + 1)
end
log_kill_error(e) click to toggle source
# File lib/uc/unicorn/gradual_shutdown.rb, line 44
def log_kill_error(e)
  stderr.info "error sending kill signal #{id}| #{e.class} #{e.message}"
  event_stream.warn "error while stopping worker #{worker.nr + 1}, #{e.class}"
end
run() click to toggle source
# File lib/uc/unicorn/gradual_shutdown.rb, line 19
def run
  return if not (server && worker)
  return if not restart?
  shutdown_old_master 
end
send_signal() click to toggle source
# File lib/uc/unicorn/gradual_shutdown.rb, line 36
def send_signal
  Process.kill(sig, File.read(old_pid).to_i)
  return true
rescue => e
  log_kill_error e
  return false
end
shutdown_old_master() click to toggle source
# File lib/uc/unicorn/gradual_shutdown.rb, line 25
def shutdown_old_master
  event_stream.debug "stopping old worker #{id}"
  if send_signal
    event_stream.debug "stopped old worker #{id}"
  end
end
sig() click to toggle source
# File lib/uc/unicorn/gradual_shutdown.rb, line 32
def sig
  (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU
end