From c9b46365e7e78a1d7d097b2d00db1ad3ae47ba55 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Fri, 15 Aug 2003 23:44:28 +0000 Subject: [PATCH] create results only in transitioner svn path=/trunk/boinc/; revision=2126 --- checkin_notes | 17 ++++++++++++++ db/boinc_db.C | 7 ++++-- db/boinc_db.h | 1 + db/schema.sql | 1 + sched/make_work.C | 2 +- sched/transitioner.C | 13 +++++++++++ tools/backend_lib.C | 39 ++++++++++++++++----------------- tools/backend_lib.h | 9 ++++++-- tools/process_result_template.C | 24 +++++++++++++++++++- 9 files changed, 87 insertions(+), 26 deletions(-) diff --git a/checkin_notes b/checkin_notes index c822981c10..515d6c515b 100755 --- a/checkin_notes +++ b/checkin_notes @@ -5798,3 +5798,20 @@ David Aug 15 2003 David Aug 15 2003 - changed "timeout_check" to "transitioner" + +David Aug 15 2003 + - changed logic so that create_work doesn't create any results; + this is left to the transitioner, since it does this anyway. + This required adding a result_template field to the workunit table, + which is the original result template macro-substituted + with the upload URL + + db/ + boinc_db.C,h + schema.sql + sched/ + make_work.C + transitioner.C + tools/ + backend_lib.C,h + process_result_template.C diff --git a/db/boinc_db.C b/db/boinc_db.C index 9df314b8f3..b99d1322c5 100644 --- a/db/boinc_db.C +++ b/db/boinc_db.C @@ -581,7 +581,8 @@ void DB_WORKUNIT::db_print(char* buf){ "error_mask=%d, file_delete_state=%d, assimilate_state=%d, " "workseq_next=%d, opaque=%d, " "min_quorum=%d, target_nresults=%d, max_error_results=%d, " - "max_total_results=%d, max_success_results=%d", + "max_total_results=%d, max_success_results=%d, " + "result_template='%s'", id, create_time, appid, name, xml_doc, batch, rsc_fpops, rsc_iops, rsc_memory, rsc_disk, @@ -594,7 +595,8 @@ void DB_WORKUNIT::db_print(char* buf){ target_nresults, max_error_results, max_total_results, - max_success_results + max_success_results, + result_template ); } @@ -626,6 +628,7 @@ void DB_WORKUNIT::db_parse(MYSQL_ROW &r) { max_error_results = atoi(r[i++]); max_total_results = atoi(r[i++]); max_success_results = atoi(r[i++]); + strcpy2(result_template, r[i++]); } void DB_RESULT::db_print(char* buf){ diff --git a/db/boinc_db.h b/db/boinc_db.h index 19ec23d979..c277fa8b46 100755 --- a/db/boinc_db.h +++ b/db/boinc_db.h @@ -304,6 +304,7 @@ struct WORKUNIT { // (need this in case results never returned int max_success_results; // WU error if < #success results // without consensus (i.e. WU is nondeterministic) + char result_template[MAX_BLOB_SIZE]; // the following not used in the DB char app_name[256]; diff --git a/db/schema.sql b/db/schema.sql index 90bcbc49f4..f7cd578475 100644 --- a/db/schema.sql +++ b/db/schema.sql @@ -169,6 +169,7 @@ create table workunit ( max_error_results integer not null, max_total_results integer not null, max_success_results integer not null, + result_template blob, primary key (id) ); diff --git a/sched/make_work.C b/sched/make_work.C index 375ce353c6..75560da0a7 100644 --- a/sched/make_work.C +++ b/sched/make_work.C @@ -188,7 +188,7 @@ void make_work() { sprintf(suffix, "%d_%d", start_time, seqno++); create_result( wu, result_template, suffix, key, - config.upload_url, config.download_url + config.upload_url ); log_messages.printf(SchedMessages::DEBUG, "[%s_%s] Added result\n", wu.name, suffix); nresults_left--; diff --git a/sched/transitioner.C b/sched/transitioner.C index bd068c95c6..b284a16d8b 100644 --- a/sched/transitioner.C +++ b/sched/transitioner.C @@ -291,6 +291,7 @@ void handle_wu(DB_WORKUNIT& wu) { wu.id, wu.name, n ); for (i=0; i=0); -#endif - strcpy(out, ""); p = strtok(tmplate, "\n"); while (p) { @@ -174,7 +165,7 @@ void initialize_result(DB_RESULT& result, DB_WORKUNIT& wu) { int create_result( DB_WORKUNIT& wu, char* result_template, char* result_name_suffix, R_RSA_PRIVATE_KEY& key, - char* upload_url, char* download_url + char* upload_url ) { DB_RESULT result; char base_outfile_name[256]; @@ -191,7 +182,7 @@ int create_result( result_template_copy, key, base_outfile_name, - upload_url, download_url + upload_url ); strcpy(result.xml_doc_in, result_template_copy); @@ -214,9 +205,7 @@ int create_work( R_RSA_PRIVATE_KEY& key, char* upload_url, char* download_url ) { - int i, retval; - char suffix[256]; - char result_template[MAX_BLOB_SIZE]; + int retval; char _result_template[MAX_BLOB_SIZE]; char wu_template[MAX_BLOB_SIZE]; @@ -230,6 +219,16 @@ int create_work( fprintf(stderr, "process_wu_template: %d\n", retval); return retval; } + + retval = read_filename(result_template_filename, _result_template); + if (retval) { + fprintf(stderr, "create_work: can't read result template\n"); + return retval; + } + + strcpy(wu.result_template, _result_template); + process_result_template_upload_url_only(wu.result_template, upload_url); + retval = wu.insert(); if (retval) { fprintf(stderr, "create_work: workunit.insert() %d\n", retval); @@ -237,22 +236,22 @@ int create_work( } wu.id = boinc_db_insert_id(); - retval = read_filename(result_template_filename, _result_template); - if (retval) { - fprintf(stderr, "create_work: can't read result template\n"); - return retval; - } +#if 0 + char suffix[256]; + char result_template[MAX_BLOB_SIZE]; + int i; for (i=0; i