Class: SimpleMapReduce::Worker::PollingWorkersStatusWorker

Inherits:
Object
  • Object
show all
Defined in:
lib/simple_map_reduce/worker/polling_workers_status_worker.rb

Instance Method Summary collapse

Instance Method Details

#perform(workers) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/simple_map_reduce/worker/polling_workers_status_worker.rb', line 6

def perform(workers)
  logger.debug("begin polling workers: #{workers.keys}")
  workers.each do |id, worker|
    response = http_client(worker.url).get("/workers/#{worker.id}")
    body = JSON.parse(response.body, symbolize_names: true)[:worker]
    worker.aasm.current_state = body[:state].to_sym
  rescue => e
    logger.error(e.inspect)
    logger.error(e&.response&.inspect)
    logger.info("Worker #{worker.id} is removed from workers")
    workers.delete(id)
  end
  logger.debug("finish polling workers: #{workers.keys}")
end