class RocketJob::Subscribers::Server

Attributes

supervisor[R]

Public Class Methods

new(supervisor) click to toggle source
# File lib/rocket_job/subscribers/server.rb, line 8
def initialize(supervisor)
  @supervisor = supervisor
end

Public Instance Methods

kill(server_id: nil, name: nil, wait_timeout: 5) click to toggle source
# File lib/rocket_job/subscribers/server.rb, line 12
def kill(server_id: nil, name: nil, wait_timeout: 5)
  return unless my_server?(server_id, name)

  supervisor.synchronize do
    Supervisor.shutdown!

    supervisor.logger.info("Stopping Pool")
    supervisor.worker_pool.stop
    unless supervisor.worker_pool.living_count.zero?
      supervisor.logger.info("Giving pool #{wait_timeout} seconds to terminate")
      sleep(wait_timeout)
    end
    supervisor.logger.info("Kill Pool")
    supervisor.worker_pool.kill
  end

  logger.info "Killed"
end
pause(server_id: nil, name: nil) click to toggle source
# File lib/rocket_job/subscribers/server.rb, line 31
def pause(server_id: nil, name: nil)
  return unless my_server?(server_id, name)

  supervisor.synchronize { supervisor.server.pause! if supervisor.server.may_pause? }
  Supervisor.event!
  logger.info "Paused"
end
refresh(server_id: nil, name: nil) click to toggle source
# File lib/rocket_job/subscribers/server.rb, line 39
def refresh(server_id: nil, name: nil)
  return unless my_server?(server_id, name)

  Supervisor.event!
  logger.info "Refreshed"
end
resume(server_id: nil, name: nil) click to toggle source
# File lib/rocket_job/subscribers/server.rb, line 46
def resume(server_id: nil, name: nil)
  return unless my_server?(server_id, name)

  supervisor.synchronize { supervisor.server.resume! if supervisor.server.may_resume? }
  Supervisor.event!
  logger.info "Resumed"
end
stop(server_id: nil, name: nil) click to toggle source
# File lib/rocket_job/subscribers/server.rb, line 54
def stop(server_id: nil, name: nil)
  return unless my_server?(server_id, name)

  Supervisor.shutdown!
  logger.info "Shutdown"
end
thread_dump(server_id: nil, name: nil) click to toggle source
# File lib/rocket_job/subscribers/server.rb, line 61
def thread_dump(server_id: nil, name: nil)
  return unless my_server?(server_id, name)

  logger.info "Thread dump"
  supervisor.worker_pool.log_backtraces
end

Private Instance Methods

my_server?(server_id, name) click to toggle source
# File lib/rocket_job/subscribers/server.rb, line 70
def my_server?(server_id, name)
  return true if server_id.nil? && name.nil?
  return true if supervisor.server.name == name

  server_id.to_s == supervisor.server.id.to_s
end