mirror of https://github.com/BOINC/boinc.git
- cancel_jobs tool: add --name option to cancel job by name.
From David Coss. svn path=/trunk/boinc/; revision=26132
This commit is contained in:
parent
fdf6629f4c
commit
7cc750e616
|
@ -6007,3 +6007,11 @@ David 20 Sept 2012
|
|||
MainDocument.cpp
|
||||
client/
|
||||
makefile_sim
|
||||
|
||||
David 20 Sept 2012
|
||||
- cancel_jobs tool: add --name option to cancel job by name.
|
||||
From David Coss.
|
||||
|
||||
tools/
|
||||
backend_lib.cpp,h
|
||||
cancel_jobs.cpp
|
||||
|
|
|
@ -517,6 +517,8 @@ int create_delete_file_msg(int host_id, const char* file_name) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
// cancel jobs in a range of workunit IDs
|
||||
//
|
||||
int cancel_jobs(int min_id, int max_id) {
|
||||
DB_WORKUNIT wu;
|
||||
DB_RESULT result;
|
||||
|
@ -541,4 +543,32 @@ int cancel_jobs(int min_id, int max_id) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
// cancel a particular job
|
||||
//
|
||||
int cancel_job(DB_WORKUNIT& wu) {
|
||||
DB_RESULT result;
|
||||
char set_clause[256], where_clause[256];
|
||||
int retval;
|
||||
|
||||
// cancel unsent results
|
||||
//
|
||||
sprintf(set_clause, "server_state=%d, outcome=%d",
|
||||
RESULT_SERVER_STATE_OVER, RESULT_OUTCOME_DIDNT_NEED
|
||||
);
|
||||
sprintf(where_clause, "server_state=%d and workunitid=%d",
|
||||
RESULT_SERVER_STATE_UNSENT, wu.id
|
||||
);
|
||||
retval = result.update_fields_noid(set_clause, where_clause);
|
||||
if (retval) return retval;
|
||||
|
||||
// cancel the workunit
|
||||
//
|
||||
sprintf(set_clause, "error_mask=error_mask|%d, transition_time=%d",
|
||||
WU_ERROR_CANCELLED, (int)(time(0))
|
||||
);
|
||||
retval = wu.update_field(set_clause);
|
||||
if (retval) return retval;
|
||||
return 0;
|
||||
}
|
||||
|
||||
const char *BOINC_RCSID_b5f8b10eb5 = "$Id$";
|
||||
|
|
|
@ -121,4 +121,8 @@ extern int create_delete_file_msg(
|
|||
//
|
||||
extern int cancel_jobs(int min_id, int max_id);
|
||||
|
||||
// cancel a particular job
|
||||
//
|
||||
extern int cancel_job(DB_WORKUNIT&);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -16,8 +16,9 @@
|
|||
// along with BOINC. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
// cancel_jobs min-ID max-ID
|
||||
//
|
||||
// cancel jobs from min-ID to max-ID inclusive
|
||||
// cancel jobs from min-ID to max-ID inclusive
|
||||
// cancel_jobs --name wuname
|
||||
// cancel the job with the given name
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
|
@ -26,14 +27,12 @@
|
|||
|
||||
void usage() {
|
||||
fprintf(stderr, "Usage: cancel_jobs min-ID max-ID\n");
|
||||
fprintf(stderr, "or cancel_jobs --name wuname\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
if (argc != 3) usage();
|
||||
int min_id = atoi(argv[1]);
|
||||
int max_id = atoi(argv[2]);
|
||||
if (!min_id || !max_id) usage();
|
||||
|
||||
int retval = config.parse_file();
|
||||
if (retval) exit(1);
|
||||
|
@ -45,10 +44,24 @@ int main(int argc, char** argv) {
|
|||
printf("boinc_db.open: %s\n", boincerror(retval));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
retval = cancel_jobs(min_id, max_id);
|
||||
if (!strcmp(argv[1], "--name")) {
|
||||
DB_WORKUNIT wu;
|
||||
char buf[256];
|
||||
sprintf(buf, "where name='%s'", argv[2]);
|
||||
retval = wu.lookup(buf);
|
||||
if (retval) {
|
||||
fprintf(stderr, "No workunit named '%s'\n", argv[2]);
|
||||
exit(1);
|
||||
}
|
||||
retval = cancel_job(wu);
|
||||
} else {
|
||||
int min_id = atoi(argv[1]);
|
||||
int max_id = atoi(argv[2]);
|
||||
if (!min_id || !max_id) usage();
|
||||
retval = cancel_jobs(min_id, max_id);
|
||||
}
|
||||
if (retval) {
|
||||
fprintf(stderr, "cancel_jobs() failed: %s\n", boincerror(retval));
|
||||
fprintf(stderr, "cancel job failed: %s\n", boincerror(retval));
|
||||
exit(retval);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue