mirror of https://github.com/BOINC/boinc.git
*** empty log message ***
svn path=/trunk/boinc/; revision=5496
This commit is contained in:
parent
1e808b012c
commit
41fb9a9e8c
|
@ -25153,3 +25153,13 @@ David 22 Feb 2005
|
|||
create_account_action.php
|
||||
edit_user_info_action.php
|
||||
team_edit_form.php
|
||||
|
||||
David 22 Feb 2005
|
||||
- Validator: added a "-mod n i" cmdline option.
|
||||
Processes only WUs with ID mod n == i.
|
||||
Lets you run multiple copies of validators for greater throughput.
|
||||
|
||||
db/
|
||||
boinc_db.C,h
|
||||
sched/
|
||||
validator.C
|
||||
|
|
|
@ -853,10 +853,11 @@ void VALIDATOR_ITEM::parse(MYSQL_ROW& r) {
|
|||
|
||||
int DB_VALIDATOR_ITEM_SET::enumerate(
|
||||
int appid, int nresult_limit,
|
||||
int wu_id_modulus, int wu_id_remainder,
|
||||
std::vector<VALIDATOR_ITEM>& items
|
||||
) {
|
||||
int x;
|
||||
char query[MAX_QUERY_LEN];
|
||||
char query[MAX_QUERY_LEN], mod_clause[256];
|
||||
char priority[256];
|
||||
MYSQL_ROW row;
|
||||
VALIDATOR_ITEM new_item;
|
||||
|
@ -865,6 +866,15 @@ int DB_VALIDATOR_ITEM_SET::enumerate(
|
|||
strcpy(priority, "");
|
||||
if (db->mysql) strcpy(priority, "HIGH_PRIORITY");
|
||||
|
||||
if (wu_id_modulus) {
|
||||
sprintf(mod_clause,
|
||||
" and id %% %d = %d ",
|
||||
wu_id_modulus, wu_id_remainder
|
||||
);
|
||||
} else {
|
||||
strcpy(mod_clause, "");
|
||||
}
|
||||
|
||||
sprintf(query,
|
||||
"SELECT %s "
|
||||
" wu.id, "
|
||||
|
@ -899,10 +909,10 @@ int DB_VALIDATOR_ITEM_SET::enumerate(
|
|||
" workunit AS wu "
|
||||
" LEFT JOIN result AS res ON wu.id = res.workunitid "
|
||||
"WHERE "
|
||||
" wu.appid = %d and wu.need_validate > 0 "
|
||||
" wu.appid = %d and wu.need_validate > 0 %s "
|
||||
"LIMIT "
|
||||
" %d ",
|
||||
priority, appid, nresult_limit
|
||||
priority, appid, mod_clause, nresult_limit
|
||||
);
|
||||
|
||||
x = db->do_query(query);
|
||||
|
|
|
@ -615,6 +615,8 @@ public:
|
|||
int enumerate(
|
||||
int appid,
|
||||
int nresult_limit,
|
||||
int wu_id_modulus,
|
||||
int wu_id_remainder,
|
||||
std::vector<VALIDATOR_ITEM>& items
|
||||
);
|
||||
int update_result(RESULT&);
|
||||
|
|
|
@ -17,13 +17,13 @@
|
|||
// or write to the Free Software Foundation, Inc.,
|
||||
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
//
|
||||
// validator - check and validate new results, and grant credit
|
||||
// validator - check and validate results, and grant credit
|
||||
// -app appname
|
||||
// [-d debug_level]
|
||||
// [-one_pass_N_WU N] // Validate only N WU in one pass, then exit
|
||||
// [-one_pass] // make one pass through WU table, then exit
|
||||
// [-asynch] // fork, run in separate process
|
||||
// [-one_pass_N_WU N] // Validate only N WU in one pass, then exit
|
||||
// [-one_pass] // make one pass through WU table, then exit
|
||||
// [-asynch] // fork, run in separate process
|
||||
// [-mod n i] // process only WUs with (id mod n) == i
|
||||
//
|
||||
// This program must be linked with two project-specific functions:
|
||||
// check_set() and check_pair().
|
||||
|
@ -58,6 +58,10 @@ extern int check_pair(
|
|||
|
||||
SCHED_CONFIG config;
|
||||
char app_name[256];
|
||||
int wu_id_modulus=0;
|
||||
int wu_id_remainder=0;
|
||||
int one_pass_N_WU=0;
|
||||
|
||||
|
||||
// here when a result has been validated;
|
||||
// grant credit to host, user and team
|
||||
|
@ -466,8 +470,6 @@ void handle_wu(
|
|||
}
|
||||
}
|
||||
|
||||
int one_pass_N_WU=0;
|
||||
|
||||
// make one pass through the workunits with need_validate set.
|
||||
// return true if there were any
|
||||
//
|
||||
|
@ -475,10 +477,17 @@ bool do_validate_scan(APP& app) {
|
|||
DB_VALIDATOR_ITEM_SET validator;
|
||||
std::vector<VALIDATOR_ITEM> items;
|
||||
bool found=false;
|
||||
int retval;
|
||||
|
||||
// loop over entries that need to be checked
|
||||
//
|
||||
while (!validator.enumerate(app.id, one_pass_N_WU?one_pass_N_WU:SELECT_LIMIT, items)) {
|
||||
while (1) {
|
||||
retval = validator.enumerate(
|
||||
app.id, one_pass_N_WU?one_pass_N_WU:SELECT_LIMIT,
|
||||
wu_id_modulus, wu_id_remainder,
|
||||
items
|
||||
);
|
||||
if (retval) break;
|
||||
handle_wu(validator, items);
|
||||
found = true;
|
||||
}
|
||||
|
@ -538,6 +547,9 @@ int main(int argc, char** argv) {
|
|||
} else if (!strcmp(argv[i], "-d")) {
|
||||
boinc_validator_debuglevel=atoi(argv[++i]);
|
||||
log_messages.set_debug_level(boinc_validator_debuglevel);
|
||||
} else if (!strcmp(argv[i], "-mod")) {
|
||||
wu_id_modulus = atoi(argv[++i]);
|
||||
wu_id_remainder = atoi(argv[++i]);
|
||||
} else {
|
||||
log_messages.printf(SCHED_MSG_LOG::CRITICAL, "unrecognized arg: %s\n", argv[i]);
|
||||
exit(1);
|
||||
|
@ -558,13 +570,12 @@ int main(int argc, char** argv) {
|
|||
}
|
||||
}
|
||||
|
||||
// // Call lock_file after fork(), because file locks are not always inherited
|
||||
// if (lock_file(LOCKFILE)) {
|
||||
// log_messages.printf(SCHED_MSG_LOG::NORMAL, "Another copy of validate is already running\n");
|
||||
// exit(1);
|
||||
// }
|
||||
// write_pid_file(PIDFILE);
|
||||
log_messages.printf(SCHED_MSG_LOG::NORMAL, "Starting validator\n");
|
||||
if (wu_id_modulus) {
|
||||
log_messages.printf(SCHED_MSG_LOG::NORMAL,
|
||||
"Modulus %d, remainder %d\n", wu_id_modulus, wu_id_remainder
|
||||
);
|
||||
}
|
||||
|
||||
install_stop_signal_handler();
|
||||
|
||||
|
|
Loading…
Reference in New Issue