Changeset 120 for trunk/oarutils


Ignore:
Timestamp:
Dec 19, 2015, 2:31:48 PM (8 years ago)
Author:
g7moreau
Message:
  • First implementation of fonctional return status code
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/oarutils/oar-parexec

    r119 r120  
    265265      $job_stderr = "2> $stderr-$job_name.stderr" if $stderr ne '' and $switchio;
    266266
    267       my $job_nodefile = "/tmp/oar-parexec-$ENV{LOGNAME}-$ENV{OAR_JOB_ID}-$job_name";
    268       my $job_pidfile  = "/tmp/oar-parexec-$ENV{LOGNAME}-$ENV{OAR_JOB_ID}-$job_name.pid";
     267      my $job_nodefile   = "/tmp/oar-parexec-$ENV{LOGNAME}-$ENV{OAR_JOB_ID}-$job_name";
     268      my $job_pidfile    = "/tmp/oar-parexec-$ENV{LOGNAME}-$ENV{OAR_JOB_ID}-$job_name.pid";
     269      my $job_statusfile = "/tmp/oar-parexec-$ENV{LOGNAME}-$ENV{OAR_JOB_ID}-$job_name.status";
    269270
    270271      $scheduled{$job_pid} = {
     
    295296         }
    296297
     298      $fh->print("echo 0 > $job_statusfile\n");
    297299      $fh->print("(\n");
    298300      $fh->print("$job_cmd\n");
    299       $fh->print(") $job_stdout $job_stderr \&\n");
     301      $fh->print(") $job_stdout $job_stderr || echo \$? > $job_statusfile \&\n");
    300302      $fh->print("while [ \$(jobs -p | wc -l) -gt 0 ]\n");
    301303      $fh->print("do\n");
     
    303305      $fh->print("done\n");
    304306
     307      $fh->print("OAR_SUBJOB_RETCODE=\$(cat $job_statusfile)\n");
     308      $fh->print("rm -f $job_statusfile\n");
    305309      $fh->print("rm -f $job_pidfile\n")  if $sig_transmit;
    306310      $fh->print("rm -f $job_nodefile\n") if $job_np > 1;
    307       $fh->print("exit\n");
     311      $fh->print("exit \$OAR_SUBJOB_RETCODE\n");
    308312      cede;
    309313      }
     
    316320         # non blocking PID test
    317321         if (waitpid($job_pid, WNOHANG)) {
     322            # get return status code
     323            my $job_retcode0 = $? >> 8;
     324            #print "ERREUR0 $job_pid $job_retcode0\n" if $job_retcode0;
     325
    318326            my $msg = sprintf "end   job %${job_name_maxlen}s / %5i at %s oar job %i on node %s\n",
    319327               $scheduled{$job_pid}->{name},
    320328               $job_pid, time, $ENV{OAR_JOB_ID}, $scheduled{$job_pid}->{ressource};
     329
     330            # Job error
     331            $msg =~ s/^end\s+job/error:$job_retcode0 job/
     332               if $job_retcode0 > 0 and $job_retcode0 != 99;
    321333
    322334            # Job non finish, just suspend if received checkpoint signal
Note: See TracChangeset for help on using the changeset viewer.