X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/b269c28f1d54e8609f36c8aeb77a2b6025172066..d14d34b534e6914dea107878212436dd995c6560:/services/api/script/crunch-dispatch.rb diff --git a/services/api/script/crunch-dispatch.rb b/services/api/script/crunch-dispatch.rb index 515bfaada0..9fb25664a4 100755 --- a/services/api/script/crunch-dispatch.rb +++ b/services/api/script/crunch-dispatch.rb @@ -1,5 +1,9 @@ #!/usr/bin/env ruby +# We want files written by crunch-dispatch to be writable by other processes +# with the same GID, see bug #7228 +File.umask(0002) + require 'shellwords' include Process @@ -63,6 +67,8 @@ class Dispatcher raise "No CRUNCH_JOB_BIN env var, and crunch-job not in path." end + @docker_bin = ENV['CRUNCH_JOB_DOCKER_BIN'] + @arvados_internal = Rails.configuration.git_internal_dir if not File.exists? @arvados_internal $stderr.puts `mkdir -p #{@arvados_internal.shellescape} && git init --bare #{@arvados_internal.shellescape}` @@ -188,7 +194,7 @@ class Dispatcher # Otherwise, return nil. need_procs = NODE_CONSTRAINT_MAP.each_pair.map do |job_key, node_key| Proc.new do |node| - positive_int(node.info[node_key], 0) >= + positive_int(node.properties[node_key], 0) >= positive_int(job.runtime_constraints[job_key], 0) end end @@ -372,6 +378,7 @@ class Dispatcher if Server::Application.config.crunch_job_user cmd_args.unshift("sudo", "-E", "-u", Server::Application.config.crunch_job_user, + "LD_LIBRARY_PATH=#{ENV['LD_LIBRARY_PATH']}", "PATH=#{ENV['PATH']}", "PERLLIB=#{ENV['PERLLIB']}", "PYTHONPATH=#{ENV['PYTHONPATH']}", @@ -421,6 +428,10 @@ class Dispatcher '--job', job.uuid, '--git-dir', @arvados_internal] + if @docker_bin + cmd_args += ['--docker-bin', @docker_bin] + end + if @todo_job_retries.include?(job.uuid) cmd_args << "--force-unlock" end @@ -740,6 +751,7 @@ class Dispatcher def run act_as_system_user + User.first.group_permissions $stderr.puts "dispatch: ready" while !$signal[:term] or @running.size > 0 read_pipes