class Redispot::Server::Killer

Public Class Methods

new(redis_pid, timeout = 3) click to toggle source
# File lib/redispot/server.rb, line 175
def initialize (redis_pid, timeout = 3)
  @owner_pid = Process.pid
  @redis_pid = redis_pid
  @timeout   = timeout
end

Public Instance Methods

call(*args) click to toggle source
# File lib/redispot/server.rb, line 181
def call (*args)
  return if @owner_pid != Process.pid

  signals = [:TERM, :INT, :KILL]

  begin
    Process.kill(signals.shift, pid)
    Timeout.timeout(timeout) { Process.waitpid(pid) }
  rescue Timeout::Error => error
    retry unless signals.empty?
    raise error
  end
end