class RocketJob::Subscribers::Worker
Attributes
supervisor[R]
Public Class Methods
new(supervisor)
click to toggle source
# File lib/rocket_job/subscribers/worker.rb, line 8 def initialize(supervisor) @supervisor = supervisor end
Public Instance Methods
kill(server_id:, worker_id:, wait_timeout: 3)
click to toggle source
# File lib/rocket_job/subscribers/worker.rb, line 12 def kill(server_id:, worker_id:, wait_timeout: 3) return unless my_server?(server_id) worker = locate_worker(worker_id) return unless worker worker.shutdown! worker.join(wait_timeout) worker.kill logger.info "Killed" end
stop(server_id:, worker_id:)
click to toggle source
# File lib/rocket_job/subscribers/worker.rb, line 25 def stop(server_id:, worker_id:) return unless my_server?(server_id) worker = locate_worker(worker_id) return unless worker worker.shutdown! logger.info "Stopped Worker: #{worker_id}" end
thread_dump(server_id:, worker_id:)
click to toggle source
# File lib/rocket_job/subscribers/worker.rb, line 35 def thread_dump(server_id:, worker_id:) return unless my_server?(server_id) worker = locate_worker(worker_id) return unless worker logger.info "Thread dump Worker: #{worker_id}" logger.backtrace(thread: worker.thread) if worker.thread && worker.alive? end
Private Instance Methods
locate_worker(worker_id)
click to toggle source
# File lib/rocket_job/subscribers/worker.rb, line 51 def locate_worker(worker_id) return unless worker_id worker = supervisor.worker_pool.find(worker_id) return unless worker&.alive? worker end
my_server?(server_id)
click to toggle source
# File lib/rocket_job/subscribers/worker.rb, line 47 def my_server?(server_id) server_id == supervisor.server.id end