Class: Redispot::Server::Killer
- Inherits:
-
Object
- Object
- Redispot::Server::Killer
- Defined in:
- lib/redispot/server.rb
Overview
:nodoc
Instance Method Summary collapse
- #call(*args) ⇒ Object
-
#initialize(redis_pid, timeout = 3) ⇒ Killer
constructor
A new instance of Killer.
Constructor Details
#initialize(redis_pid, timeout = 3) ⇒ Killer
Returns a new instance of Killer.
175 176 177 178 179 |
# File 'lib/redispot/server.rb', line 175 def initialize (redis_pid, timeout = 3) @owner_pid = Process.pid @redis_pid = redis_pid @timeout = timeout end |
Instance Method Details
#call(*args) ⇒ Object
181 182 183 184 185 186 187 188 189 190 191 192 193 |
# 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 |