lib/baleen/runner.rb in baleen-0.0.2 vs lib/baleen/runner.rb in baleen-0.0.9

- old
+ new

@@ -1,5 +1,7 @@ +require "baleen/error" + module Baleen class DockerParam def initialize(params) @params = params @@ -47,23 +49,24 @@ def initialize(containers, socket, msg) @containers = containers @socket = socket @queue = [] + @results = [] @params = DockerParam.new(msg.params) end def run create_runners.each do |runners| @queue = runners @queue.each do |runner| runner.async.run end loop {break if monitor_runners} + @results += @queue.map {|runner| runner.status.params} end - - msg = Message::Response::RunnerFinish.new(status: "done") + msg = Message::Response::JobComplete.new(status: "done", results: @results.to_json) @socket.puts(msg.to_json) end private @@ -98,21 +101,33 @@ @params = params end def run start_runner do |result| - @status = Message::Response::JobComplete.new( + @status = Message::Response::RunnerFinish.new( status_code: result.status_code, container_id: result.container_id, - log: result.log + log: result.log, + file: @params.files, ) end sleep 0.1 # Stop a moment until RunnerManager checks the status end def start_runner - @docker_client.create_container(@params) - @docker_client.start_container + max_retry = 3; count = 0 + + begin + @docker_client.create_container(@params) + @docker_client.start_container + rescue Docker::Error::ContainerNotFound => e + count += 1 + if count > max_retry + raise Baleen::Error::StartContainerFail + else + retry + end + end yield( @docker_client.result ) end end end \ No newline at end of file