IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 29289


Ignore:
Timestamp:
Sep 30, 2010, 3:25:54 PM (16 years ago)
Author:
bills
Message:

add fault_counts

Location:
trunk/ippTools/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippTools/src/pstamptool.c

    r29248 r29289  
    6464    break;
    6565
     66// XXX make this a configurable parameter
     67#define PSTAMP_MAX_JOB_FAULTS 5
     68#define PSTAMP_MAX_DEP_FAULTS 5
    6669
    6770int main(int argc, char **argv)
     
    717720            outputBase,
    718721            options,
    719             dep_id
     722            dep_id,
     723            0   // fault_count
    720724            )) {
    721725        psError(PS_ERR_UNKNOWN, false, "database error");
     
    911915        psStringAppend(&query, "\n %c pstampJob.fault = %d", c, fault);
    912916        c = ',';
     917        psStringAppend(&query, ", pstampJob.fault_count = pstampJob.fault_count+ 1");
    913918    }
    914919   
     
    984989    pxAddLabelSearchArgs(config, where, "-label", "pstampRequest.label", "LIKE");
    985990
     991    PXOPT_LOOKUP_BOOL(clear_fault_count, config->args, "-clear_fault_count", false);
     992
    986993    PXOPT_LOOKUP_BOOL(all, config->args, "-all", false);
     994
    987995    // XXX: we don't actually use -limit. It doesn't work for UPDATE
    988996    // it's an allowed arg because add_poll_args adds it
     
    9921000    // By default only revert faults < PSTAMP_FIRST_ERROR_CODE which are our "ipp exit codes"
    9931001    // codes larger than that are the pstamp request interface.
    994     // Don't fault those unless -fault waa provided
     1002    // Don't fault those unless -fault was explicitly provided
    9951003    psString faultClause = psStringCopy("");
    9961004    if (!fault) {
     
    10111019    psFree(where);
    10121020
    1013     if (!p_psDBRunQueryF(config->dbh, query, faultClause)) {
     1021    // don't keep reverting once the number of faults reaches some value unless
     1022    // a parameter asking us to clear that count is provided
     1023    psString faultCountClause = NULL;
     1024    if (clear_fault_count) {
     1025        psStringAppend(&faultCountClause, "\n, pstampJob.fault_count = 0");
     1026    } else {
     1027        psStringAppend(&query, " AND pstampJob.fault_count < %d", PSTAMP_MAX_JOB_FAULTS);
     1028    }
     1029
     1030    if (!p_psDBRunQueryF(config->dbh, query, faultCountClause, faultClause)) {
     1031        psFree(faultCountClause);
    10141032        psFree(faultClause);
    10151033        psFree(query);
     
    10191037
    10201038    psFree(faultClause);
     1039    psFree(faultCountClause);
     1040    psFree(query);
    10211041
    10221042    return true;
     
    12231243        need_magic,
    12241244        outdir,
    1225         0               // fault
     1245        0,              // fault
     1246        0               // fault_count
    12261247        )) {
    12271248        if (!psDBRollback(config->dbh)) {
     
    13451366        psStringAppend(&query, "%s fault = %d", needComma ? ", " : "", fault);
    13461367        needComma = true;
     1368        psStringAppend(&query, ", pstampDependent.fault_count = pstampDependent.fault_count + 1");
    13471369    }
    13481370    psStringAppend(&query, " WHERE dep_id = %" PRId64, dep_id);
     
    13731395    PXOPT_COPY_S64(config->args, where, "-req_id", "req_id", "==");
    13741396    pxAddLabelSearchArgs(config, where, "-label", "pstampRequest.label", "==");
     1397    PXOPT_LOOKUP_BOOL(clear_fault_count, config->args, "-clear_fault_count", false);
    13751398
    13761399    // XXX: we don't actually use -limit. It doesn't work for UPDATE
     
    14031426    }
    14041427
    1405     if (!p_psDBRunQuery(config->dbh, query)) {
     1428    // don't keep reverting once the number of faults reaches some value unless
     1429    // a parameter asking us to clear that count is provided
     1430    psString faultCountClause = NULL;
     1431    if (clear_fault_count) {
     1432        psStringAppend(&faultCountClause, "\n, pstampDependent.fault_count = 0");
     1433    } else {
     1434        psStringAppend(&faultCountClause, " ");
     1435        psStringAppend(&query, " AND pstampDependent.fault_count < %d", PSTAMP_MAX_DEP_FAULTS);
     1436    }
     1437
     1438    if (!p_psDBRunQueryF(config->dbh, query, faultCountClause)) {
    14061439        psError(PS_ERR_UNKNOWN, false, "database error");
    14071440        psFree(query);
  • trunk/ippTools/src/pstamptoolConfig.c

    r29248 r29289  
    185185    psMetadataAddS16(revertjobArgs, PS_LIST_TAIL, "-fault",  0,     "fault to revert", 0);
    186186    psMetadataAddStr(revertjobArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by pstampRequest label (LIKE comparision)", NULL);
     187    psMetadataAddBool(revertjobArgs, PS_LIST_TAIL, "-clear_fault_count", 0,       "clear job fault count", false);
    187188    psMetadataAddBool(revertjobArgs, PS_LIST_TAIL, "-all", 0,       "revert all faulted jobs", false);
    188189    psMetadataAddU64(revertjobArgs, PS_LIST_TAIL, "-limit", 0,      "limit result set to N items", 0);
     
    214215    psMetadataAddStr(revertdependentArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK,   "define label for dependent ", NULL);
    215216    psMetadataAddS16(revertdependentArgs, PS_LIST_TAIL, "-fault",  0, "search by dependent fault", 0);
     217    psMetadataAddBool(revertdependentArgs, PS_LIST_TAIL, "-clear_fault_count", 0,       "clear job fault count", false);
    216218    psMetadataAddU64(revertdependentArgs, PS_LIST_TAIL, "-limit", 0,  "limit result set to N items", 0);
    217219
Note: See TracChangeset for help on using the changeset viewer.