IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 29248


Ignore:
Timestamp:
Sep 28, 2010, 10:42:54 AM (16 years ago)
Author:
bills
Message:

Add pstamptool -stopdependentjob a new mode for giving up on jobs whose dependents are not avialable.

Location:
trunk/ippTools
Files:
1 added
3 edited

Legend:

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

    r29143 r29248  
    4646static bool pendingjobMode(pxConfig *config);
    4747static bool updatejobMode(pxConfig *config);
     48static bool stopdependentjobMode(pxConfig *config);
    4849static bool revertjobMode(pxConfig *config);
    4950static bool addprojectMode(pxConfig *config);
     
    8990        MODECASE(PSTAMPTOOL_MODE_PENDINGJOB, pendingjobMode);
    9091        MODECASE(PSTAMPTOOL_MODE_UPDATEJOB, updatejobMode);
     92        MODECASE(PSTAMPTOOL_MODE_STOPDEPENDENTJOB, stopdependentjobMode);
    9193        MODECASE(PSTAMPTOOL_MODE_REVERTJOB, revertjobMode);
    9294        MODECASE(PSTAMPTOOL_MODE_ADDPROJECT, addprojectMode);
     
    925927    psU64 affected = psDBAffectedRows(config->dbh);
    926928    psLogMsg("pstamptool", PS_LOG_INFO, "Updated %" PRIu64 " pstampJobs", affected);
     929
     930    return true;
     931}
     932// Terminate jobs which have dependents setting both the pstampDependent and pstampJob.fault
     933static bool stopdependentjobMode(pxConfig *config)
     934{
     935    PS_ASSERT_PTR_NON_NULL(config, false);
     936
     937    PXOPT_LOOKUP_S32(fault,  config->args, "-set_fault",  true, false);
     938
     939    psMetadata *where = psMetadataAlloc();
     940
     941    PXOPT_COPY_S64(config->args, where, "-req_id", "req_id", "==");
     942    PXOPT_COPY_S64(config->args, where, "-job_id", "job_id", "==");
     943    PXOPT_COPY_S64(config->args, where, "-dep_id", "dep_id", "==");
     944    PXOPT_COPY_S32(config->args, where, "-fault",  "pstampDependent.fault", "==");
     945
     946    // XXX: How about selecting by pstampRequest.label? No. That is too dangerous by itself.
     947
     948    psString query = pxDataGet("pstamptool_stopdependentjob.sql");
     949
     950    if (psListLength(where->list)) {
     951        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     952        psStringAppend(&query, " AND %s", whereClause);
     953        psFree(whereClause);
     954    } else {
     955        psFree(where);
     956        psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required");
     957        return false;
     958    }
     959    psFree(where);
     960
     961    if (!p_psDBRunQueryF(config->dbh, query, fault, fault)) {
     962        psError(PS_ERR_UNKNOWN, false, "database error");
     963        psFree(query);
     964        return false;
     965    }
     966    psFree(query);
     967
     968    psU64 affected = psDBAffectedRows(config->dbh);
     969    psLogMsg("pstamptool", PS_LOG_INFO, "Updated %" PRIu64 " pstampJobs and pstampDependents", affected);
    927970
    928971    return true;
     
    13271370    PXOPT_COPY_S64(config->args, where, "-fault", "pstampDependent.fault", "==");
    13281371    PXOPT_COPY_S64(config->args, where, "-dep_id", "dep_id", "==");
     1372    PXOPT_COPY_S64(config->args, where, "-job_id", "job_id", "==");
     1373    PXOPT_COPY_S64(config->args, where, "-req_id", "req_id", "==");
    13291374    pxAddLabelSearchArgs(config, where, "-label", "pstampRequest.label", "==");
    13301375
  • trunk/ippTools/src/pstamptool.h

    r28183 r29248  
    3838    PSTAMPTOOL_MODE_LISTJOB,
    3939    PSTAMPTOOL_MODE_PENDINGJOB,
     40    PSTAMPTOOL_MODE_STOPDEPENDENTJOB,
    4041    PSTAMPTOOL_MODE_JOBRESULT,
    4142    PSTAMPTOOL_MODE_UPDATEJOB,
  • trunk/ippTools/src/pstamptoolConfig.c

    r29143 r29248  
    170170    psMetadataAddS16(updatejobArgs, PS_LIST_TAIL, "-set_fault", 0,            "new result", 0);
    171171
     172    // -stopdependentjob
     173    psMetadata *stopdependentjobArgs = psMetadataAlloc();
     174    psMetadataAddS64(stopdependentjobArgs, PS_LIST_TAIL,  "-req_id", 0,       "req_id of jobs to update", 0);
     175    psMetadataAddS64(stopdependentjobArgs, PS_LIST_TAIL,  "-job_id", 0,       "job_id of jobs to update", 0);
     176    psMetadataAddS64(stopdependentjobArgs, PS_LIST_TAIL,  "-dep_id", 0,       "dep_id of jobs to update", 0);
     177    psMetadataAddS16(stopdependentjobArgs, PS_LIST_TAIL,  "-fault", 0,        "current value for dependent fault", 0);
     178    psMetadataAddS16(stopdependentjobArgs, PS_LIST_TAIL,  "-set_fault", 0,    "new fault value for job and dependent (required)", 0);
     179
    172180    // -revertjob
    173181    psMetadata *revertjobArgs = psMetadataAlloc();
     
    201209    // -revertdependent
    202210    psMetadata *revertdependentArgs = psMetadataAlloc();
    203     psMetadataAddS64(revertdependentArgs, PS_LIST_TAIL, "-dep_id", 0, "define id for dependent", 0);
     211    psMetadataAddS64(revertdependentArgs, PS_LIST_TAIL, "-dep_id", 0, "search by dep_id for dependent", 0);
     212    psMetadataAddS64(revertdependentArgs, PS_LIST_TAIL, "-job_id", 0, "search by job_ idfor dependent", 0);
     213    psMetadataAddS64(revertdependentArgs, PS_LIST_TAIL, "-req_id", 0, "search by req_id for dependent", 0);
    204214    psMetadataAddStr(revertdependentArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK,   "define label for dependent ", NULL);
    205     psMetadataAddS16(revertdependentArgs, PS_LIST_TAIL, "-fault",  0,   "define fault", 0);
    206     psMetadataAddU64(revertdependentArgs, PS_LIST_TAIL, "-limit", 0,      "limit result set to N items", 0);
     215    psMetadataAddS16(revertdependentArgs, PS_LIST_TAIL, "-fault",  0, "search by dependent fault", 0);
     216    psMetadataAddU64(revertdependentArgs, PS_LIST_TAIL, "-limit", 0,  "limit result set to N items", 0);
    207217
    208218    // -pendingdependent
     
    263273    PXOPT_ADD_MODE("-pendingjob",      "", PSTAMPTOOL_MODE_PENDINGJOB,   pendingjobArgs);
    264274    PXOPT_ADD_MODE("-updatejob",       "", PSTAMPTOOL_MODE_UPDATEJOB,    updatejobArgs);
     275    PXOPT_ADD_MODE("-stopdependentjob", "", PSTAMPTOOL_MODE_STOPDEPENDENTJOB,  stopdependentjobArgs);
    265276    PXOPT_ADD_MODE("-revertjob",       "", PSTAMPTOOL_MODE_REVERTJOB,    revertjobArgs);
    266277
Note: See TracChangeset for help on using the changeset viewer.