class SimpleMapReduce::Server::JobWorker

Attributes

worker[R]
worker_id[R]

Public Class Methods

check_s3_access() click to toggle source
# File lib/simple_map_reduce/server/job_worker.rb, line 78
def check_s3_access
  s3_client.list_buckets
  logger.info('[OK] s3 connection test')
end
http_client() click to toggle source
# File lib/simple_map_reduce/server/job_worker.rb, line 102
def http_client
  @http_client ||= ::Faraday.new(
    url: SimpleMapReduce.job_tracker_url,
    headers: {
      'Accept' => 'application/json',
        'Content-Type' => 'application/json'
    }
  ) do |faraday|
    faraday.response :raise_error
    faraday.adapter  Faraday.default_adapter
  end
end
job_manager() click to toggle source
# File lib/simple_map_reduce/server/job_worker.rb, line 98
def job_manager
  @job_manager ||= ::Rasteira::EmbedWorker::Manager.run
end
logger() click to toggle source
# File lib/simple_map_reduce/server/job_worker.rb, line 119
def logger
  SimpleMapReduce.logger
end
quit!() click to toggle source

@override `Sinatra::Base#quit!` github.com/sinatra/sinatra/blob/2e980f3534b680fbd79d7ec39552b4afb7675d6c/lib/sinatra/base.rb#L1483-L1491

Calls superclass method
# File lib/simple_map_reduce/server/job_worker.rb, line 125
def quit!
  job_manager&.shutdown_workers!
  super
end
register_myself_to_job_tracker() click to toggle source
# File lib/simple_map_reduce/server/job_worker.rb, line 83
def register_myself_to_job_tracker
  response = http_client.post do |request|
    request.url('/workers')
    request.body = { url: SimpleMapReduce.job_worker_url }.to_json
  end

  body = JSON.parse(response.body, symbolize_names: true)
  @worker_id = body[:id]
  @worker = SimpleMapReduce::Server::Worker.new(
    id: @worker_id,
    url: SimpleMapReduce.job_worker_url
  )
  logger.info("[OK] registering this worker to the job_tracker #{SimpleMapReduce.job_worker_url}")
end
s3_client() click to toggle source
# File lib/simple_map_reduce/server/job_worker.rb, line 115
def s3_client
  SimpleMapReduce::S3Client.instance.client
end
setup_worker() click to toggle source
# File lib/simple_map_reduce/server/job_worker.rb, line 68
def setup_worker
  check_s3_access
  register_myself_to_job_tracker
  job_manager
  logger.info('All setup process is done successfully. This worker is operation ready.')
  logger.info("This job worker url: #{SimpleMapReduce.job_worker_url}, id: #{worker_id}")
  logger.info("This job worker status url: #{SimpleMapReduce.job_worker_url}/workers/#{worker_id}")
  logger.info("The job tracker url: #{SimpleMapReduce.job_tracker_url}")
end