X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/3a6b4e91d5b26bb1e50bdff649e8b8dc86bc93c0..cdde7f246fec59bc99da86145fd4cf4efcf37a68:/services/crunch/crunch-job diff --git a/services/crunch/crunch-job b/services/crunch/crunch-job index 30bc668280..710fc0b0c8 100755 --- a/services/crunch/crunch-job +++ b/services/crunch/crunch-job @@ -97,6 +97,7 @@ if (defined $job_api_token) { my $have_slurm = exists $ENV{SLURM_JOBID} && exists $ENV{SLURM_NODELIST}; my $job_has_uuid = $jobspec =~ /^[-a-z\d]+$/; +my $local_job = !$job_has_uuid; $SIG{'HUP'} = sub @@ -119,7 +120,8 @@ my $metastream = Warehouse::Stream->new(whc => new Warehouse); $metastream->clear; $metastream->write_start('log.txt'); -my $User = {}; +my $User = $arv->{'users'}->{'current'}->execute; + my $Job = {}; my $job_id; my $dbh; @@ -127,7 +129,6 @@ my $sth; if ($job_has_uuid) { $Job = $arv->{'jobs'}->{'get'}->execute('uuid' => $jobspec); - $User = $arv->{'users'}->{'current'}->execute; if (!$force_unlock) { if ($Job->{'is_locked_by'}) { croak("Job is locked: " . $Job->{'is_locked_by'}); @@ -153,11 +154,12 @@ else qw(script script_version script_parameters); } - if (!defined $Job->{'uuid'}) { - my $hostname = `hostname -s`; - chomp $hostname; - $Job->{'uuid'} = sprintf ("%s-t%d-p%d", $hostname, time, $$); - } + $Job->{'is_locked_by'} = $User->{'uuid'}; + $Job->{'started_at'} = gmtime; + + $Job = $arv->{'jobs'}->{'create'}->execute('job' => $Job); + + $job_has_uuid = 1; } $job_id = $Job->{'uuid'}; @@ -314,21 +316,21 @@ else my $build_script; -do { - local $/ = undef; - $build_script = ; -}; $ENV{"CRUNCH_SRC_COMMIT"} = $Job->{script_version}; -my $skip_install = (!$job_has_uuid && $Job->{script_version} =~ m{^/}); +my $skip_install = ($local_job && $Job->{script_version} =~ m{^/}); if ($skip_install) { $ENV{"CRUNCH_SRC"} = $Job->{script_version}; } else { + do { + local $/ = undef; + $build_script = ; + }; Log (undef, "Install revision ".$Job->{script_version}); my $nodelist = join(",", @node); @@ -556,7 +558,7 @@ for (my $todo_ptr = 0; $todo_ptr <= $#jobstep_todo; $todo_ptr ++) my @execargs = qw(sh); my $build_script_to_send = ""; my $command = - "mkdir -p $ENV{CRUNCH_TMP}/revision " + "mkdir -p $ENV{CRUNCH_WORK} $ENV{CRUNCH_TMP} " ."&& cd $ENV{CRUNCH_TMP} "; if ($build_script) {