Class: Oxidized::Worker
- Inherits:
-
Object
- Object
- Oxidized::Worker
- Defined in:
- lib/oxidized/worker.rb
Instance Method Summary collapse
-
#initialize(nodes) ⇒ Worker
constructor
A new instance of Worker.
- #process(job) ⇒ Object
- #work ⇒ Object
Constructor Details
Instance Method Details
#process(job) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/oxidized/worker.rb', line 27 def process job node = job.node node.last = job node.stats.add job @jobs.duration job.time node.running = false if job.status == :success msg = "update #{node.name}" msg += " from #{node.from}" if node.from msg += " with message '#{node.msg}'" if node.msg node.output.new.store node.name, job.config, :msg => msg, :user => node.user, :group => node.group node.reset else msg = "#{node.name} status #{job.status}" if node.retry < CFG.retries node.retry += 1 msg += ", retry attempt #{node.retry}" @nodes.next node.name else msg += ", retries exhausted, giving up" node.retry = 0 end Log.warn msg end end |
#work ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/oxidized/worker.rb', line 10 def work ended = [] @jobs.delete_if { |job| ended << job if not job.alive? } ended.each { |job| process job } while @jobs.size < @jobs.want Log.debug "Jobs #{@jobs.size}, Want: #{@jobs.want}" # ask for next node in queue non destructive way nextnode = @nodes.first unless nextnode.last.nil? break if nextnode.last.end + CFG.interval > Time.now.utc end # shift nodes and get the next node node = @nodes.get node.running? ? next : node.running = true @jobs.push Job.new node end end |