class WorkerKiller::Killer::Base

Attributes

config[RW]
kill_attempts[RW]
logger[RW]

Public Class Methods

new(logger: WorkerKiller.configuration.logger, **_kwargs) click to toggle source
# File lib/worker_killer/killer.rb, line 7
def initialize(logger: WorkerKiller.configuration.logger, **_kwargs)
  @logger = logger
  @config = WorkerKiller.configuration
  @kill_attempts = 0
end

Public Instance Methods

do_kill(*_args) click to toggle source

:nocov:

# File lib/worker_killer/killer.rb, line 26
def do_kill(*_args)
  raise 'Not Implemented'
end
kill(start_time, **params) click to toggle source
# File lib/worker_killer/killer.rb, line 13
def kill(start_time, **params)
  alive_sec = (Time.now - start_time).round

  @kill_attempts += 1

  sig = :QUIT
  sig = :TERM if kill_attempts > config.quit_attempts
  sig = :KILL if kill_attempts > (config.quit_attempts + config.term_attempts)

  do_kill(sig, Process.pid, alive_sec, **params)
end