mirror of https://github.com/BOINC/boinc.git
*** empty log message ***
svn path=/trunk/boinc/; revision=6822
This commit is contained in:
parent
e2acf518b7
commit
e98554319c
|
@ -9591,3 +9591,12 @@ David 26 July 2005
|
||||||
client_types.C
|
client_types.C
|
||||||
cs_scheduler.C
|
cs_scheduler.C
|
||||||
cs_statefile.C
|
cs_statefile.C
|
||||||
|
|
||||||
|
Jeff 26 July 2005
|
||||||
|
- Allow multiple assimilators and file_deleters to run via
|
||||||
|
modulus on WU id for the assimilator and WU and result
|
||||||
|
id for the file_deleter.
|
||||||
|
|
||||||
|
sched/
|
||||||
|
assimilator.C
|
||||||
|
file_deleter.C
|
||||||
|
|
|
@ -46,6 +46,7 @@ SCHED_CONFIG config;
|
||||||
bool update_db = true;
|
bool update_db = true;
|
||||||
bool noinsert = false;
|
bool noinsert = false;
|
||||||
|
|
||||||
|
int wu_id_modulus=0, wu_id_remainder=0;
|
||||||
|
|
||||||
#define SLEEP_INTERVAL 10
|
#define SLEEP_INTERVAL 10
|
||||||
|
|
||||||
|
@ -59,14 +60,23 @@ bool do_pass(APP& app) {
|
||||||
DB_RESULT canonical_result, result;
|
DB_RESULT canonical_result, result;
|
||||||
bool did_something = false;
|
bool did_something = false;
|
||||||
char buf[256];
|
char buf[256];
|
||||||
|
char mod_clause[256];
|
||||||
int retval;
|
int retval;
|
||||||
int num_assimilated=0;
|
int num_assimilated=0;
|
||||||
|
|
||||||
check_stop_daemons();
|
check_stop_daemons();
|
||||||
|
|
||||||
|
if (wu_id_modulus) {
|
||||||
|
sprintf(mod_clause, " and workunit.id %% %d = %d ",
|
||||||
|
wu_id_modulus, wu_id_remainder
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
strcpy(mod_clause, "");
|
||||||
|
}
|
||||||
|
|
||||||
sprintf(buf,
|
sprintf(buf,
|
||||||
"where appid=%d and assimilate_state=%d limit %d",
|
"where appid=%d and assimilate_state=%d %s limit %d",
|
||||||
app.id, ASSIMILATE_READY,
|
app.id, ASSIMILATE_READY, mod_clause,
|
||||||
one_pass_N_WU ? one_pass_N_WU : 1000
|
one_pass_N_WU ? one_pass_N_WU : 1000
|
||||||
);
|
);
|
||||||
while (!wu.enumerate(buf)) {
|
while (!wu.enumerate(buf)) {
|
||||||
|
@ -79,7 +89,7 @@ bool do_pass(APP& app) {
|
||||||
}
|
}
|
||||||
|
|
||||||
log_messages.printf(SCHED_MSG_LOG::DEBUG,
|
log_messages.printf(SCHED_MSG_LOG::DEBUG,
|
||||||
"[%s] assimilating; state=%d\n", wu.name, wu.assimilate_state
|
"[%s] assimilating boinc WU %d; state=%d\n", wu.name, wu.id, wu.assimilate_state
|
||||||
);
|
);
|
||||||
|
|
||||||
sprintf(buf, "where workunitid=%d", wu.id);
|
sprintf(buf, "where workunitid=%d", wu.id);
|
||||||
|
@ -161,11 +171,19 @@ int main(int argc, char** argv) {
|
||||||
// prevent the inserting of results into the *backend*
|
// prevent the inserting of results into the *backend*
|
||||||
// (as opposed to the boinc) DB.
|
// (as opposed to the boinc) DB.
|
||||||
noinsert = true;
|
noinsert = true;
|
||||||
|
} else if (!strcmp(argv[i], "-mod")) {
|
||||||
|
wu_id_modulus = atoi(argv[++i]);
|
||||||
|
wu_id_remainder = atoi(argv[++i]);
|
||||||
} else {
|
} else {
|
||||||
log_messages.printf(SCHED_MSG_LOG::CRITICAL, "Unrecognized arg: %s\n", argv[i]);
|
log_messages.printf(SCHED_MSG_LOG::CRITICAL, "Unrecognized arg: %s\n", argv[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (wu_id_modulus) {
|
||||||
|
log_messages.printf(SCHED_MSG_LOG::DEBUG, "Using mod'ed WU enumeration. modulus = %d remainder = %d\n",
|
||||||
|
wu_id_modulus, wu_id_remainder);
|
||||||
|
}
|
||||||
|
|
||||||
retval = config.parse_file("..");
|
retval = config.parse_file("..");
|
||||||
if (retval) {
|
if (retval) {
|
||||||
log_messages.printf(SCHED_MSG_LOG::CRITICAL, "Can't parse config file\n");
|
log_messages.printf(SCHED_MSG_LOG::CRITICAL, "Can't parse config file\n");
|
||||||
|
|
|
@ -43,6 +43,8 @@
|
||||||
|
|
||||||
SCHED_CONFIG config;
|
SCHED_CONFIG config;
|
||||||
|
|
||||||
|
int id_modulus=0, id_remainder=0;
|
||||||
|
|
||||||
// Given a filename, find its full path in the upload directory hierarchy
|
// Given a filename, find its full path in the upload directory hierarchy
|
||||||
// Return an error if file isn't there.
|
// Return an error if file isn't there.
|
||||||
//
|
//
|
||||||
|
@ -183,14 +185,23 @@ bool do_pass(bool retry_error) {
|
||||||
DB_RESULT result;
|
DB_RESULT result;
|
||||||
bool did_something = false;
|
bool did_something = false;
|
||||||
char buf[256];
|
char buf[256];
|
||||||
|
char mod_clause[256];
|
||||||
int retval;
|
int retval;
|
||||||
|
|
||||||
check_stop_daemons();
|
check_stop_daemons();
|
||||||
|
|
||||||
if (retry_error) {
|
if (id_modulus) {
|
||||||
sprintf(buf, "where file_delete_state=%d or file_delete_state=%d limit 1000", FILE_DELETE_READY, FILE_DELETE_ERROR);
|
sprintf(mod_clause, " and id %% %d = %d ",
|
||||||
|
id_modulus, id_remainder
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
sprintf(buf, "where file_delete_state=%d limit 1000", FILE_DELETE_READY);
|
strcpy(mod_clause, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (retry_error) {
|
||||||
|
sprintf(buf, "where file_delete_state=%d or file_delete_state=%d %s limit 1000", FILE_DELETE_READY, FILE_DELETE_ERROR, mod_clause);
|
||||||
|
} else {
|
||||||
|
sprintf(buf, "where file_delete_state=%d %s limit 1000", FILE_DELETE_READY, mod_clause);
|
||||||
}
|
}
|
||||||
while (!wu.enumerate(buf)) {
|
while (!wu.enumerate(buf)) {
|
||||||
did_something = true;
|
did_something = true;
|
||||||
|
@ -210,9 +221,9 @@ bool do_pass(bool retry_error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( retry_error ) {
|
if ( retry_error ) {
|
||||||
sprintf(buf, "where file_delete_state=%d or file_delete_state=%d limit 1000", FILE_DELETE_READY, FILE_DELETE_ERROR);
|
sprintf(buf, "where file_delete_state=%d or file_delete_state=%d %s limit 1000", FILE_DELETE_READY, FILE_DELETE_ERROR, mod_clause);
|
||||||
} else {
|
} else {
|
||||||
sprintf(buf, "where file_delete_state=%d limit 1000", FILE_DELETE_READY);
|
sprintf(buf, "where file_delete_state=%d limit %s 1000", FILE_DELETE_READY, mod_clause);
|
||||||
}
|
}
|
||||||
while (!result.enumerate(buf)) {
|
while (!result.enumerate(buf)) {
|
||||||
did_something = true;
|
did_something = true;
|
||||||
|
@ -265,11 +276,19 @@ int main(int argc, char** argv) {
|
||||||
preserve_result_files = true;
|
preserve_result_files = true;
|
||||||
} else if (!strcmp(argv[i], "-d")) {
|
} else if (!strcmp(argv[i], "-d")) {
|
||||||
log_messages.set_debug_level(atoi(argv[++i]));
|
log_messages.set_debug_level(atoi(argv[++i]));
|
||||||
|
} else if (!strcmp(argv[i], "-mod")) {
|
||||||
|
id_modulus = atoi(argv[++i]);
|
||||||
|
id_remainder = atoi(argv[++i]);
|
||||||
} else {
|
} else {
|
||||||
log_messages.printf(SCHED_MSG_LOG::CRITICAL, "Unrecognized arg: %s\n", argv[i]);
|
log_messages.printf(SCHED_MSG_LOG::CRITICAL, "Unrecognized arg: %s\n", argv[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (id_modulus) {
|
||||||
|
log_messages.printf(SCHED_MSG_LOG::DEBUG, "Using mod'ed WU/result enumeration. modulus = %d remainder = %d\n",
|
||||||
|
id_modulus, id_remainder);
|
||||||
|
}
|
||||||
|
|
||||||
retval = config.parse_file("..");
|
retval = config.parse_file("..");
|
||||||
if (retval) {
|
if (retval) {
|
||||||
log_messages.printf(SCHED_MSG_LOG::CRITICAL, "Can't parse config file\n");
|
log_messages.printf(SCHED_MSG_LOG::CRITICAL, "Can't parse config file\n");
|
||||||
|
|
Loading…
Reference in New Issue