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