X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/3687df5d70eb3112914b81c002c6fa10af3a1e8a..0a96628128db6235ddea225cb70eae60ebd67248:/services/api/script/crunch-dispatch.rb diff --git a/services/api/script/crunch-dispatch.rb b/services/api/script/crunch-dispatch.rb index a0ba9b1fde..a23b02b15c 100755 --- a/services/api/script/crunch-dispatch.rb +++ b/services/api/script/crunch-dispatch.rb @@ -2,6 +2,7 @@ include Process +$warned = {} $signal = {} %w{TERM INT}.each do |sig| signame = sig @@ -163,6 +164,7 @@ class Dispatcher $stderr.puts start_banner $redis.set job.uuid, start_banner + "\n" $redis.publish job.uuid, start_banner + $redis.publish job.owner_uuid, start_banner @running[job.uuid] = { stdin: i, @@ -218,8 +220,10 @@ class Dispatcher lines.each do |line| $stderr.print "#{job_uuid} ! " unless line.index(job_uuid) $stderr.puts line - $redis.publish job_uuid, "#{Time.now.ctime.to_s} #{line.strip}" - $redis.append job_uuid, "#{Time.now.ctime.to_s} #{line}" + pub_msg = "#{Time.now.ctime.to_s} #{line.strip}" + $redis.publish job.owner_uuid, pub_msg + $redis.publish job_uuid, pub_msg + $redis.append job_uuid, pub_msg + "\n" if LOG_BUFFER_SIZE < $redis.strlen(job_uuid) $redis.set(job_uuid, $redis @@ -308,7 +312,9 @@ class Dispatcher else refresh_todo unless did_recently(:refresh_todo, 1.0) update_node_status - start_jobs unless @todo.empty? or did_recently(:start_jobs, 1.0) + unless @todo.empty? or did_recently(:start_jobs, 1.0) or $signal[:term] + start_jobs + end end reap_children select(@running.values.collect { |j| [j[:stdout], j[:stderr]] }.flatten, @@ -329,4 +335,7 @@ class Dispatcher end end +# This is how crunch-job child procs know where the "refresh" trigger file is +ENV["CRUNCH_REFRESH_TRIGGER"] = Rails.configuration.crunch_refresh_trigger + Dispatcher.new.run