IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jun 15, 2010, 1:12:26 PM (16 years ago)
Author:
watersc1
Message:

Change to make stack summary code run at 9PM HST to attempt to dodge a race condition. Probablyl not a final solution, but will work for now.

Location:
branches/czw_branch/20100519
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/czw_branch/20100519

  • branches/czw_branch/20100519/ippTools/src/pubtool.c

    r27071 r28338  
    151151    PS_ASSERT_PTR_NON_NULL(config, false);
    152152
    153     psMetadata *where = psMetadataAlloc(); // WHERE conditions
     153    psMetadata *diffWhere = psMetadataAlloc(); // WHERE conditions for diffs
     154    psMetadata *camWhere = psMetadataAlloc(); // WHERE conditions for cams
    154155
    155156    // required
    156157
    157158    // optional
    158     PXOPT_COPY_S64(config->args, where, "-client_id", "client_id", "==");
    159     pxAddLabelSearchArgs(config, where, "-label", "label", "=="); // define using newExp label
     159    PXOPT_COPY_S64(config->args, diffWhere, "-client_id", "client_id", "==");
     160    pxAddLabelSearchArgs(config, diffWhere, "-label", "diffRun.label", "==");
     161    pxAddLabelSearchArgs(config, diffWhere, "-data_group", "diffRun.data_group", "LIKE");
     162    PXOPT_COPY_TIME(config->args, diffWhere, "-dateobs_begin", "rawExp.dateobs", ">=");
     163    PXOPT_COPY_TIME(config->args, diffWhere, "-dateobs_end", "rawExp.dateobs", "<=");
     164    PXOPT_COPY_STR(config->args, diffWhere, "-filter", "rawExp.filter", "LIKE");
     165    PXOPT_COPY_STR(config->args, diffWhere, "-obs_mode", "rawExp.obs_mode", "LIKE");
     166
     167    PXOPT_COPY_S64(config->args, camWhere, "-client_id", "client_id", "==");
     168    pxAddLabelSearchArgs(config, camWhere, "-label", "camRun.label", "==");
     169    pxAddLabelSearchArgs(config, camWhere, "-data_group", "camRun.data_group", "LIKE");
     170    PXOPT_COPY_TIME(config->args, camWhere, "-dateobs_begin", "rawExp.dateobs", ">=");
     171    PXOPT_COPY_TIME(config->args, camWhere, "-dateobs_end", "rawExp.dateobs", "<=");
     172    PXOPT_COPY_STR(config->args, camWhere, "-filter", "rawExp.filter", "LIKE");
     173    PXOPT_COPY_STR(config->args, camWhere, "-obs_mode", "rawExp.obs_mode", "LIKE");
     174
     175    PXOPT_LOOKUP_BOOL(rerun, config->args, "-rerun", false);
     176    PXOPT_LOOKUP_BOOL(pretend, config->args, "-pretend", false);
     177    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     178    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
    160179
    161180    psString query = pxDataGet("pubtool_definerun.sql"); // Query to run
    162181    if (!query) {
    163182        psError(PXTOOLS_ERR_SYS, false, "Failed to retreive SQL statement");
    164         psFree(where);
    165         return false;
     183        psFree(diffWhere);
     184        psFree(camWhere);
     185        return false;
     186    }
     187
     188    if (!rerun) {
     189        psStringAppend(&query, "\nWHERE publishRun.client_id IS NULL");
     190    }
     191
     192    if (limit) {
     193        psString limitString = psDBGenerateLimitSQL(limit);
     194        psStringAppend(&query, "\n%s", limitString);
     195        psFree(limitString);
    166196    }
    167197
    168198    if (!psDBTransaction(config->dbh)) {
    169199        psError(PS_ERR_UNKNOWN, false, "Database error");
    170         psFree(where);
    171         return false;
    172     }
    173 
    174     psString whereClause = psStringCopy(""); // Additional constraints to add to query
    175     if (psListLength(where->list)) {
    176         psString clause = psDBGenerateWhereConditionSQL(where, NULL);
    177         psStringAppend(&whereClause, "\n AND %s", clause);
     200        psFree(diffWhere);
     201        psFree(camWhere);
     202        return false;
     203    }
     204
     205    psString whereDiff = psStringCopy(""); // Additional constraints to add to query
     206    if (psListLength(diffWhere->list)) {
     207        psString clause = psDBGenerateWhereConditionSQL(diffWhere, NULL);
     208        psStringAppend(&whereDiff, "\n AND %s", clause);
    178209        psFree(clause);
    179210    }
    180     psFree(where);
    181 
    182     if (!p_psDBRunQueryF(config->dbh, query, whereClause, whereClause)) {
     211    psFree(diffWhere);
     212
     213    psString whereCam = psStringCopy(""); // Additional constraints to add to query
     214    if (psListLength(camWhere->list)) {
     215        psString clause = psDBGenerateWhereConditionSQL(camWhere, NULL);
     216        psStringAppend(&whereCam, "\n AND %s", clause);
     217        psFree(clause);
     218    }
     219    psFree(camWhere);
     220
     221    if (!p_psDBRunQueryF(config->dbh, query, whereDiff, whereCam)) {
    183222        psError(PS_ERR_UNKNOWN, false, "Database error");
    184223        psFree(query);
    185         psFree(whereClause);
     224        psFree(whereDiff);
     225        psFree(whereCam);
    186226        if (!psDBRollback(config->dbh)) {
    187227            psError(PS_ERR_UNKNOWN, false, "Database error");
     
    190230    }
    191231    psFree(query);
    192     psFree(whereClause);
     232    psFree(whereDiff);
     233    psFree(whereCam);
    193234
    194235    psArray *output = p_psDBFetchResult(config->dbh); // Output of SELECT statement
     
    202243    if (!psArrayLength(output)) {
    203244        psTrace("pubtool", PS_LOG_INFO, "No rows found");
     245        psFree(output);
     246        return true;
     247    }
     248
     249    if (pretend) {
     250        if (!ippdbPrintMetadatas(stdout, output, "publishRun", !simple)) {
     251            psError(psErrorCodeLast(), false, "Failed to print array");
     252            psFree(output);
     253            return false;
     254        }
    204255        psFree(output);
    205256        return true;
     
    241292    PXOPT_COPY_STR(config->args, where, "-stage", "publishClient.stage", "==");
    242293    PXOPT_COPY_STR(config->args, where, "-comment", "publishClient.comment", "LIKE");
    243     PXOPT_COPY_STR(config->args, where, "-label", "publishRun.label", "==");
     294    pxAddLabelSearchArgs(config, where, "-label", "label", "==");
    244295
    245296    // optional
Note: See TracChangeset for help on using the changeset viewer.