class RocketJob::ActiveWorker
Information about a server currently working on a job
Attributes
job[RW]
name[R]
started_at[RW]
When this server started working on this job / slice
Public Class Methods
all(server_name = nil)
click to toggle source
Returns [Hash<String:ActiveWorker>] hash of all servers sorted by name and what they are currently working on. Returns {} if no servers are currently busy doing any work
Parameters
server_name: [String] Only jobs running on the specified server
# File lib/rocket_job/active_worker.rb, line 17 def self.all(server_name = nil) servers = [] # Need paused, failed or aborted since servers may still be working on active slices query = RocketJob::Job.where(:state.in => %i[running paused failed aborted]) query = query.where(worker_name: /\A#{server_name}/) if server_name query.each do |job| servers += job.rocket_job_active_workers end servers end
new(name, started_at, job)
click to toggle source
# File lib/rocket_job/active_worker.rb, line 37 def initialize(name, started_at, job) @name = name @started_at = started_at @job = job end
requeue_zombies()
click to toggle source
Requeues all jobs for which the workers have disappeared
# File lib/rocket_job/active_worker.rb, line 29 def self.requeue_zombies all.each do |active_worker| next if !active_worker.zombie? || !active_worker.job.may_requeue?(active_worker.server_name) active_worker.job.requeue!(active_worker.server_name) end end
Public Instance Methods
duration()
click to toggle source
Duration in human readable form
# File lib/rocket_job/active_worker.rb, line 44 def duration RocketJob.seconds_as_duration(duration_s) end
duration_s()
click to toggle source
Number of seconds this server has been working on this job / slice
# File lib/rocket_job/active_worker.rb, line 49 def duration_s Time.now - (started_at || Time.now) end
name=(name)
click to toggle source
# File lib/rocket_job/active_worker.rb, line 71 def name=(name) @server = nil @name = name end
server()
click to toggle source
# File lib/rocket_job/active_worker.rb, line 62 def server @server ||= RocketJob::Server.where(name: server_name).first end
server_name()
click to toggle source
Returns [String] the name of the server running this worker
# File lib/rocket_job/active_worker.rb, line 54 def server_name if (match = name.to_s.match(/(.*:.*):.*/)) match[1] else name end end
zombie?()
click to toggle source
The server on which this worker was running is no longer running
# File lib/rocket_job/active_worker.rb, line 67 def zombie? server.nil? end