#!/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
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}`
# 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
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']}",
'--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
def run
act_as_system_user
+ User.first.group_permissions
$stderr.puts "dispatch: ready"
while !$signal[:term] or @running.size > 0
read_pipes