Changeset 29290
- Timestamp:
- Sep 30, 2010, 3:29:17 PM (16 years ago)
- Location:
- tags/ipp-20100823
- Files:
-
- 5 edited
-
dbconfig/pstamp.md (modified) (2 diffs, 1 prop)
-
ippTools/share/pstamptool_revertdependent.sql (modified) (1 diff, 1 prop)
-
ippTools/share/pstamptool_revertjob.sql (modified) (1 diff, 1 prop)
-
ippTools/src/pstamptool.c (modified) (14 diffs, 1 prop)
-
ippTools/src/pstamptoolConfig.c (modified) (4 diffs, 1 prop)
Legend:
- Unmodified
- Added
- Removed
-
tags/ipp-20100823/dbconfig/pstamp.md
- Property svn:mergeinfo set to
r28294 r29290 46 46 options S64 64 47 47 dep_id S64 0 48 fault_count S32 0 48 49 END 49 50 … … 59 60 outdir STR 255 60 61 fault S16 0 62 fault_count S32 0 61 63 END 62 64 -
tags/ipp-20100823/ippTools/share/pstamptool_revertdependent.sql
- Property svn:mergeinfo set to
r28146 r29290 3 3 JOIN pstampRequest USING(req_id) 4 4 SET pstampDependent.fault = 0 5 -- fault count hook %s 5 6 WHERE pstampDependent.state = 'new' 6 7 AND (pstampDependent.fault > 0) -
tags/ipp-20100823/ippTools/share/pstamptool_revertjob.sql
- Property svn:mergeinfo set to
r26213 r29290 2 2 JOIN pstampRequest USING(req_id) 3 3 SET pstampJob.fault = 0 4 -- clear fault count clause goes here %s 4 5 WHERE pstampRequest.state = 'run' 5 6 AND pstampJob.state = 'run' -
tags/ipp-20100823/ippTools/src/pstamptool.c
- Property svn:mergeinfo changed
/trunk/ippTools/src/pstamptool.c merged: 29248,29289
r29146 r29290 46 46 static bool pendingjobMode(pxConfig *config); 47 47 static bool updatejobMode(pxConfig *config); 48 static bool stopdependentjobMode(pxConfig *config); 48 49 static bool revertjobMode(pxConfig *config); 49 50 static bool addprojectMode(pxConfig *config); … … 63 64 break; 64 65 66 // XXX make this a configurable parameter 67 #define PSTAMP_MAX_JOB_FAULTS 5 68 #define PSTAMP_MAX_DEP_FAULTS 5 65 69 66 70 int main(int argc, char **argv) … … 89 93 MODECASE(PSTAMPTOOL_MODE_PENDINGJOB, pendingjobMode); 90 94 MODECASE(PSTAMPTOOL_MODE_UPDATEJOB, updatejobMode); 95 MODECASE(PSTAMPTOOL_MODE_STOPDEPENDENTJOB, stopdependentjobMode); 91 96 MODECASE(PSTAMPTOOL_MODE_REVERTJOB, revertjobMode); 92 97 MODECASE(PSTAMPTOOL_MODE_ADDPROJECT, addprojectMode); … … 715 720 outputBase, 716 721 options, 717 dep_id 722 dep_id, 723 0 // fault_count 718 724 )) { 719 725 psError(PS_ERR_UNKNOWN, false, "database error"); … … 909 915 psStringAppend(&query, "\n %c pstampJob.fault = %d", c, fault); 910 916 c = ','; 917 psStringAppend(&query, ", pstampJob.fault_count = pstampJob.fault_count+ 1"); 911 918 } 912 919 … … 925 932 psU64 affected = psDBAffectedRows(config->dbh); 926 933 psLogMsg("pstamptool", PS_LOG_INFO, "Updated %" PRIu64 " pstampJobs", affected); 934 935 return true; 936 } 937 // Terminate jobs which have dependents setting both the pstampDependent and pstampJob.fault 938 static bool stopdependentjobMode(pxConfig *config) 939 { 940 PS_ASSERT_PTR_NON_NULL(config, false); 941 942 PXOPT_LOOKUP_S32(fault, config->args, "-set_fault", true, false); 943 944 psMetadata *where = psMetadataAlloc(); 945 946 PXOPT_COPY_S64(config->args, where, "-req_id", "req_id", "=="); 947 PXOPT_COPY_S64(config->args, where, "-job_id", "job_id", "=="); 948 PXOPT_COPY_S64(config->args, where, "-dep_id", "dep_id", "=="); 949 PXOPT_COPY_S32(config->args, where, "-fault", "pstampDependent.fault", "=="); 950 951 // XXX: How about selecting by pstampRequest.label? No. That is too dangerous by itself. 952 953 psString query = pxDataGet("pstamptool_stopdependentjob.sql"); 954 955 if (psListLength(where->list)) { 956 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 957 psStringAppend(&query, " AND %s", whereClause); 958 psFree(whereClause); 959 } else { 960 psFree(where); 961 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 962 return false; 963 } 964 psFree(where); 965 966 if (!p_psDBRunQueryF(config->dbh, query, fault, fault)) { 967 psError(PS_ERR_UNKNOWN, false, "database error"); 968 psFree(query); 969 return false; 970 } 971 psFree(query); 972 973 psU64 affected = psDBAffectedRows(config->dbh); 974 psLogMsg("pstamptool", PS_LOG_INFO, "Updated %" PRIu64 " pstampJobs and pstampDependents", affected); 927 975 928 976 return true; … … 941 989 pxAddLabelSearchArgs(config, where, "-label", "pstampRequest.label", "LIKE"); 942 990 991 PXOPT_LOOKUP_BOOL(clear_fault_count, config->args, "-clear_fault_count", false); 992 943 993 PXOPT_LOOKUP_BOOL(all, config->args, "-all", false); 994 944 995 // XXX: we don't actually use -limit. It doesn't work for UPDATE 945 996 // it's an allowed arg because add_poll_args adds it … … 949 1000 // By default only revert faults < PSTAMP_FIRST_ERROR_CODE which are our "ipp exit codes" 950 1001 // codes larger than that are the pstamp request interface. 951 // Don't fault those unless -fault wa aprovided1002 // Don't fault those unless -fault was explicitly provided 952 1003 psString faultClause = psStringCopy(""); 953 1004 if (!fault) { … … 968 1019 psFree(where); 969 1020 970 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); 971 1032 psFree(faultClause); 972 1033 psFree(query); … … 976 1037 977 1038 psFree(faultClause); 1039 psFree(faultCountClause); 1040 psFree(query); 978 1041 979 1042 return true; … … 1180 1243 need_magic, 1181 1244 outdir, 1182 0 // fault 1245 0, // fault 1246 0 // fault_count 1183 1247 )) { 1184 1248 if (!psDBRollback(config->dbh)) { … … 1302 1366 psStringAppend(&query, "%s fault = %d", needComma ? ", " : "", fault); 1303 1367 needComma = true; 1368 psStringAppend(&query, ", pstampDependent.fault_count = pstampDependent.fault_count + 1"); 1304 1369 } 1305 1370 psStringAppend(&query, " WHERE dep_id = %" PRId64, dep_id); … … 1327 1392 PXOPT_COPY_S64(config->args, where, "-fault", "pstampDependent.fault", "=="); 1328 1393 PXOPT_COPY_S64(config->args, where, "-dep_id", "dep_id", "=="); 1394 PXOPT_COPY_S64(config->args, where, "-job_id", "job_id", "=="); 1395 PXOPT_COPY_S64(config->args, where, "-req_id", "req_id", "=="); 1329 1396 pxAddLabelSearchArgs(config, where, "-label", "pstampRequest.label", "=="); 1397 PXOPT_LOOKUP_BOOL(clear_fault_count, config->args, "-clear_fault_count", false); 1330 1398 1331 1399 // XXX: we don't actually use -limit. It doesn't work for UPDATE … … 1358 1426 } 1359 1427 1360 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)) { 1361 1439 psError(PS_ERR_UNKNOWN, false, "database error"); 1362 1440 psFree(query); - Property svn:mergeinfo changed
-
tags/ipp-20100823/ippTools/src/pstamptoolConfig.c
- Property svn:mergeinfo changed
/trunk/ippTools/src/pstamptoolConfig.c merged: 29248,29289
r29146 r29290 170 170 psMetadataAddS16(updatejobArgs, PS_LIST_TAIL, "-set_fault", 0, "new result", 0); 171 171 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 172 180 // -revertjob 173 181 psMetadata *revertjobArgs = psMetadataAlloc(); … … 177 185 psMetadataAddS16(revertjobArgs, PS_LIST_TAIL, "-fault", 0, "fault to revert", 0); 178 186 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); 179 188 psMetadataAddBool(revertjobArgs, PS_LIST_TAIL, "-all", 0, "revert all faulted jobs", false); 180 189 psMetadataAddU64(revertjobArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); … … 201 210 // -revertdependent 202 211 psMetadata *revertdependentArgs = psMetadataAlloc(); 203 psMetadataAddS64(revertdependentArgs, PS_LIST_TAIL, "-dep_id", 0, "define id for dependent", 0); 212 psMetadataAddS64(revertdependentArgs, PS_LIST_TAIL, "-dep_id", 0, "search by dep_id for dependent", 0); 213 psMetadataAddS64(revertdependentArgs, PS_LIST_TAIL, "-job_id", 0, "search by job_ idfor dependent", 0); 214 psMetadataAddS64(revertdependentArgs, PS_LIST_TAIL, "-req_id", 0, "search by req_id for dependent", 0); 204 215 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); 216 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); 218 psMetadataAddU64(revertdependentArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 207 219 208 220 // -pendingdependent … … 263 275 PXOPT_ADD_MODE("-pendingjob", "", PSTAMPTOOL_MODE_PENDINGJOB, pendingjobArgs); 264 276 PXOPT_ADD_MODE("-updatejob", "", PSTAMPTOOL_MODE_UPDATEJOB, updatejobArgs); 277 PXOPT_ADD_MODE("-stopdependentjob", "", PSTAMPTOOL_MODE_STOPDEPENDENTJOB, stopdependentjobArgs); 265 278 PXOPT_ADD_MODE("-revertjob", "", PSTAMPTOOL_MODE_REVERTJOB, revertjobArgs); 266 279 - Property svn:mergeinfo changed
Note:
See TracChangeset
for help on using the changeset viewer.
