mirror of https://github.com/BOINC/boinc.git
*** empty log message ***
svn path=/trunk/boinc/; revision=4308
This commit is contained in:
parent
764c08e5ff
commit
b84fd8bbef
|
@ -18197,16 +18197,13 @@ David 8 Oct 2004
|
|||
prefs.C
|
||||
|
||||
Lana 8 Oct 2004
|
||||
- changed API check_set to take input WORKUNIT instead of
|
||||
DB_WORKUNIT
|
||||
- added VALIDATOR_ITEM and DB_VALIDATOR_ITEM_SET
|
||||
- optimized validator to work with the DB_VALIDATOR_ITEM_SET
|
||||
instead of going to the database
|
||||
|
||||
db/
|
||||
boinc_db.C, .h
|
||||
sched/
|
||||
validator.C
|
||||
sample_bitwise_validator.C
|
||||
sample_trivial_validator.C
|
||||
- changed check_set() to take input WORKUNIT instead of DB_WORKUNIT
|
||||
- added VALIDATOR_ITEM and DB_VALIDATOR_ITEM_SET
|
||||
- optimized validator to use DB_VALIDATOR_ITEM_SET
|
||||
|
||||
db/
|
||||
boinc_db.C, .h
|
||||
sched/
|
||||
validator.C
|
||||
sample_bitwise_validator.C
|
||||
sample_trivial_validator.C
|
||||
|
|
113
db/boinc_db.C
113
db/boinc_db.C
|
@ -791,34 +791,32 @@ int DB_TRANSITIONER_ITEM_SET::update_workunit(TRANSITIONER_ITEM& ti) {
|
|||
void VALIDATOR_ITEM::parse(MYSQL_ROW& r) {
|
||||
int i=0;
|
||||
clear();
|
||||
id = atoi(r[i++]);
|
||||
appid = atoi(r[i++]);
|
||||
strcpy2(name, r[i++]);
|
||||
need_validate= atoi(r[i++]);
|
||||
canonical_resultid = atoi(r[i++]);
|
||||
canonical_credit = atof(r[i++]);
|
||||
min_quorum = atoi(r[i++]);
|
||||
assimilate_state = atoi(r[i++]);
|
||||
transition_time = atoi(r[i++]);
|
||||
opaque = atof(r[i++]);
|
||||
batch = atoi(r[i++]);
|
||||
max_success_results = atoi(r[i++]);
|
||||
error_mask = atoi(r[i++]);
|
||||
wu.id = atoi(r[i++]);
|
||||
strcpy2(wu.name, r[i++]);
|
||||
wu.canonical_resultid = atoi(r[i++]);
|
||||
wu.canonical_credit = atof(r[i++]);
|
||||
wu.min_quorum = atoi(r[i++]);
|
||||
wu.assimilate_state = atoi(r[i++]);
|
||||
wu.transition_time = atoi(r[i++]);
|
||||
wu.opaque = atof(r[i++]);
|
||||
wu.batch = atoi(r[i++]);
|
||||
wu.max_success_results = atoi(r[i++]);
|
||||
wu.error_mask = atoi(r[i++]);
|
||||
|
||||
res_id = atoi(r[i++]);
|
||||
strcpy2(res_name, r[i++]);
|
||||
res_validate_state = atoi(r[i++]);
|
||||
res_server_state = atoi(r[i++]);
|
||||
res_outcome = atoi(r[i++]);
|
||||
res_claimed_credit = atof(r[i++]);
|
||||
res_granted_credit = atof(r[i++]);
|
||||
strcpy2(res_xml_doc_out, r[i++]);
|
||||
res_cpu_time = atof(r[i++]);
|
||||
res_batch = atoi(r[i++]);
|
||||
res_opaque = atof(r[i++]);
|
||||
res_exit_status = atoi(r[i++]);
|
||||
res_hostid = atoi(r[i++]);
|
||||
res_sent_time = atoi(r[i++]);
|
||||
res.id = atoi(r[i++]);
|
||||
strcpy2(res.name, r[i++]);
|
||||
res.validate_state = atoi(r[i++]);
|
||||
res.server_state = atoi(r[i++]);
|
||||
res.outcome = atoi(r[i++]);
|
||||
res.claimed_credit = atof(r[i++]);
|
||||
res.granted_credit = atof(r[i++]);
|
||||
strcpy2(res.xml_doc_out, r[i++]);
|
||||
res.cpu_time = atof(r[i++]);
|
||||
res.batch = atoi(r[i++]);
|
||||
res.opaque = atof(r[i++]);
|
||||
res.exit_status = atoi(r[i++]);
|
||||
res.hostid = atoi(r[i++]);
|
||||
res.sent_time = atoi(r[i++]);
|
||||
}
|
||||
|
||||
int DB_VALIDATOR_ITEM_SET::enumerate(
|
||||
|
@ -838,9 +836,7 @@ int DB_VALIDATOR_ITEM_SET::enumerate(
|
|||
sprintf(query,
|
||||
"SELECT %s "
|
||||
" wu.id, "
|
||||
" wu.appid, "
|
||||
" wu.name, "
|
||||
" wu.need_validate, "
|
||||
" wu.canonical_resultid, "
|
||||
" wu.canonical_credit, "
|
||||
" wu.min_quorum, "
|
||||
|
@ -864,14 +860,15 @@ int DB_VALIDATOR_ITEM_SET::enumerate(
|
|||
" res.exit_status, "
|
||||
" res.hostid, "
|
||||
" res.sent_time "
|
||||
"FROM "
|
||||
" workunit AS wu "
|
||||
" LEFT JOIN result AS res ON wu.id = res.workunitid "
|
||||
"WHERE "
|
||||
" wu.appid = %d and wu.need_validate > 0 "
|
||||
"LIMIT "
|
||||
" %d ",
|
||||
priority, appid, nresult_limit);
|
||||
"FROM "
|
||||
" workunit AS wu "
|
||||
" LEFT JOIN result AS res ON wu.id = res.workunitid "
|
||||
"WHERE "
|
||||
" wu.appid = %d and wu.need_validate > 0 "
|
||||
"LIMIT "
|
||||
" %d ",
|
||||
priority, appid, nresult_limit
|
||||
);
|
||||
|
||||
x = db->do_query(query);
|
||||
if (x) return mysql_errno(db->mysql);
|
||||
|
@ -955,48 +952,6 @@ int DB_VALIDATOR_ITEM_SET::update_workunit(WORKUNIT& wu) {
|
|||
return db->do_query(query);
|
||||
}
|
||||
|
||||
RESULT DB_VALIDATOR_ITEM_SET::create_result(VALIDATOR_ITEM& vi) {
|
||||
RESULT result;
|
||||
|
||||
result.workunitid = vi.id;
|
||||
result.id = vi.res_id;
|
||||
result.name = vi.res_name;
|
||||
result.validate_state = vi.res_validate_state;
|
||||
result.server_state = vi.res_server_state;
|
||||
result.outcome = vi.res_outcome;
|
||||
result.claimed_credit = vi.res_claimed_credit;
|
||||
result.granted_credit = vi.res_granted_credit;
|
||||
strcpy2(result.xml_doc_out, vi.res_xml_doc_out);
|
||||
result.cpu_time = vi.res_cpu_time;
|
||||
result.batch = vi.res_batch;
|
||||
result.opaque = vi.res_opaque;
|
||||
result.exit_status = vi.res_exit_status;
|
||||
result.hostid = vi.res_hostid;
|
||||
result.sent_time = vi.res_sent_time;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
WORKUNIT DB_VALIDATOR_ITEM_SET::create_workunit(VALIDATOR_ITEM& vi) {
|
||||
WORKUNIT wu;
|
||||
|
||||
wu.id = vi.id;
|
||||
wu.appid = vi.appid;
|
||||
strcpy2(wu.name, vi.name);
|
||||
wu.need_validate = vi.need_validate;
|
||||
wu.canonical_resultid = vi.canonical_resultid;
|
||||
wu.canonical_credit = vi.canonical_credit;
|
||||
wu.min_quorum = vi.min_quorum;
|
||||
wu.assimilate_state = vi.assimilate_state;
|
||||
wu.transition_time = vi.transition_time;
|
||||
wu.opaque = vi.opaque;
|
||||
wu.batch = vi.batch;
|
||||
wu.max_success_results = vi.max_success_results;
|
||||
wu.error_mask = vi.error_mask;
|
||||
|
||||
return wu;
|
||||
}
|
||||
|
||||
void WORK_ITEM::parse(MYSQL_ROW& r) {
|
||||
int i=0;
|
||||
memset(this, 0, sizeof(WORK_ITEM));
|
||||
|
|
|
@ -465,34 +465,8 @@ struct TRANSITIONER_ITEM {
|
|||
};
|
||||
|
||||
struct VALIDATOR_ITEM {
|
||||
int id;
|
||||
int appid;
|
||||
char name[256];
|
||||
bool need_validate;
|
||||
int canonical_resultid;
|
||||
double canonical_credit;
|
||||
int min_quorum;
|
||||
int assimilate_state;
|
||||
int transition_time;
|
||||
double opaque;
|
||||
int batch;
|
||||
int max_success_results;
|
||||
int error_mask;
|
||||
|
||||
int res_id;
|
||||
char res_name[256];
|
||||
int res_validate_state;
|
||||
int res_server_state;
|
||||
int res_outcome;
|
||||
double res_claimed_credit;
|
||||
double res_granted_credit;
|
||||
char res_xml_doc_out[LARGE_BLOB_SIZE];
|
||||
double res_cpu_time;
|
||||
int res_batch;
|
||||
double res_opaque;
|
||||
int res_exit_status;
|
||||
int res_hostid;
|
||||
int res_sent_time;
|
||||
WORKUNIT wu;
|
||||
RESULT res;
|
||||
|
||||
void clear();
|
||||
void parse(MYSQL_ROW&);
|
||||
|
@ -626,8 +600,6 @@ public:
|
|||
);
|
||||
int update_result(RESULT&);
|
||||
int update_workunit(WORKUNIT&);
|
||||
RESULT create_result(VALIDATOR_ITEM&);
|
||||
WORKUNIT create_workunit(VALIDATOR_ITEM&);
|
||||
};
|
||||
|
||||
// used by the feeder and scheduler for outgoing work
|
||||
|
|
|
@ -149,8 +149,9 @@ int grant_credit(RESULT& result, double credit) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
void handle_wu(DB_VALIDATOR_ITEM_SET& validator,
|
||||
std::vector<VALIDATOR_ITEM>& items) {
|
||||
void handle_wu(
|
||||
DB_VALIDATOR_ITEM_SET& validator, std::vector<VALIDATOR_ITEM>& items
|
||||
) {
|
||||
int canonical_result_index = -1;
|
||||
bool update_result, retry;
|
||||
bool need_immediate_transition = false, need_delayed_transition = false;
|
||||
|
@ -158,9 +159,10 @@ void handle_wu(DB_VALIDATOR_ITEM_SET& validator,
|
|||
double credit = 0;
|
||||
unsigned int i;
|
||||
RESULT result, canonical_result;
|
||||
WORKUNIT wu;
|
||||
|
||||
VALIDATOR_ITEM& wu_vi = items[0];
|
||||
WORKUNIT& wu=wu_vi.wu;
|
||||
|
||||
|
||||
if (wu_vi.canonical_resultid) {
|
||||
log_messages.printf(
|
||||
|
|
Loading…
Reference in New Issue