141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
|
# File 'lib/base_chip/tasker.rb', line 141
def maintain_workers
ready = @pending_tasks.select {|t| t.wait_count == 0}
if @clusters
slots = available_slots
foo = ready.size - workers_spawned
foo = slots if slots < foo
if foo > 0
foo.times do |i|
client_id = new_client_id
cluster, uid = spawn_worker(ready[0].worker_command.call(client_id))
raise "spawn_worker response wasn't unique" if @workers[uid]
@workers[client_id] = {:uid => uid, :cluster=> cluster, :started=>Time.now, :tasks=>[], :state=>:spawned, :worker_command=>ready[i].worker_command.call(0)}
status_line
end
end
else
@workers[0] = {:started=>Time.now, :tasks=>[], :state=>:running, :worker_command=>ready[0].worker_command} if ready[0]
end
ready
end
|