IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 34445 for trunk/pstamp


Ignore:
Timestamp:
Sep 18, 2012, 10:20:29 AM (14 years ago)
Author:
bills
Message:

if a run is in state goto_cleaned, but the component has data_state full
short circuit the cleanup by setting state to update

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/pstamp/scripts/pstamp_checkdependent.pl

    r34238 r34445  
    137137        print "skipping $command\n";
    138138    }
    139 } elsif (($it->{state} eq 'cleaned') or ($it->{state} eq 'update')) {
     139} elsif (($it->{state} eq 'cleaned') or ($it->{state} eq 'goto_cleaned') or ($it->{state} eq 'update')) {
    140140    #       For warp and diff stages we need to call the 'queue_update' subroutines even if the
    141141    #       data_state is update in order to check the state of inputs in earlier stages in the pipeline
     
    260260            # caller will fault the jobs
    261261            return $error_code;
     262        } elsif ($chip->{state} eq 'goto_cleaned') {
     263
     264            if ($chip->{data_state} eq 'full') {
     265                # cleanup has been queued, but has not yet finished. (cleanup pantasks is probably stopped)
     266                # Since this chip is in full go ahead and set the run to state update and change the label.
     267                # XXX: In the very rare case that this chip run is actually in the running cleanup pantasks
     268                # queue things may get confused but we can live with that
     269                my $command = "$chiptool -updaterun -set_state update -chip_id $chip_id";
     270                $command .= " -set_label $rlabel" if $rlabel;
     271
     272                if (!$no_update) {
     273                    my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) =
     274                                run(command => $command, verbose => $verbose);
     275                    unless ($success) {
     276                        my_die("failed to change ${stage}Run $stage_id $component from goto_cleaned to update", $PS_EXIT_UNKNOWN_ERROR);
     277                    }
     278                } else {
     279                    print "skipping $command\n";
     280                }
     281                $queued_update = 1;
     282            }
    262283        } elsif (($chip->{data_state} ne 'update') and ($chip->{data_state} ne 'full')) {
    263284
     
    344365    my $skycell = $metadata;
    345366
     367    if ($skycell->{state} eq 'goto_cleaned' and $skycell->{data_state} eq 'full') {
     368        # cleanup has been queued, but hasn't been done. it's "safe" to set the state back to full
     369        # XXX: seem comments in check_states_chip
     370        my $command = "$warptool -updaterun -set_state update -warp_id $warp_id";
     371        $command .= " -set_label $rlabel" if $rlabel;
     372
     373        if (!$no_update) {
     374            my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) =
     375                        run(command => $command, verbose => $verbose);
     376            unless ($success) {
     377                my_die("failed to change state of ${stage}Run $stage_id from goto_cleaned to update", $PS_EXIT_UNKNOWN_ERROR);
     378            }
     379        } else {
     380            print "skipping $command\n";
     381        }
     382        return 0;
     383    }
     384
    346385    # get the list of input chips for this skycell
    347386    my $command = "$warptool -scmap -warp_id $warp_id -skycell_id $skycell_id";
     
    428467    my $skycell = $metadata;
    429468    my $skycell_id = $skycell->{skycell_id};
     469
     470    if ($metadata->{state} eq 'goto_cleaned' and $metadata->{data_state} eq 'full') {
     471        print "changing state of diffRun $diff_id from goto_cleaned to update. skycell $skycell_id is full\n";
     472        my $command = "$difftool -updaterun -set_state update -diff_id $diff_id";
     473        $command .= " -set_label $rlabel" if $rlabel;
     474
     475        if (!$no_update) {
     476            my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) =
     477                        run(command => $command, verbose => $verbose);
     478            unless ($success) {
     479                my_die("failed to queue ${stage}Run $stage_id $component for update", $PS_EXIT_UNKNOWN_ERROR);
     480            }
     481        } else {
     482            print "skipping $command\n";
     483        }
     484        return 0;
     485    }
    430486
    431487    if ($diff_mode == $IPP_DIFF_MODE_WARP_STACK ) {
Note: See TracChangeset for help on using the changeset viewer.