#!/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'] || "/usr/bin/docker.io")
+ @docker_bin = ENV['CRUNCH_JOB_DOCKER_BIN']
@arvados_internal = Rails.configuration.git_internal_dir
if not File.exists? @arvados_internal
# 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']}",
cmd_args += [@crunch_job_bin,
'--job-api-token', @authorizations[job.uuid].api_token,
'--job', job.uuid,
- '--git-dir', @arvados_internal,
- '--docker-bin', @docker_bin]
+ '--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"
def run
act_as_system_user
+ User.first.group_permissions
$stderr.puts "dispatch: ready"
while !$signal[:term] or @running.size > 0
read_pipes