allow locally-generated input files

svn path=/trunk/boinc/; revision=10055
This commit is contained in:
David Anderson 2006-04-28 17:23:00 +00:00
parent b88d0a10d0
commit 527f0a4852
4 changed files with 27 additions and 18 deletions

View File

@ -4261,3 +4261,17 @@ David 28 Apr 2006
stats_sites.inc
tools/
backend_lib.C
David 28 Apr 2006
- core client: if an input file has <generated_locally/> set,
don't try to download it.
This allows apps to use "initialization" files
that are large and/or computationally expensive to generate.
The app generates the file once,
and it will be available (assuming <sticky/> is set)
for subsequent workunits.
client/
app_start.C
cs_apps.C
cs_files.C

View File

@ -335,25 +335,20 @@ int ACTIVE_TASK::start(bool first_time) {
return ERR_NOT_FOUND;
}
// set up input files
// set up input, output files
//
for (i=0; i<wup->input_files.size(); i++) {
fref = wup->input_files[i];
fip = fref.file_info;
get_pathname(fref.file_info, file_path);
if (first_time) {
if (first_time) {
for (i=0; i<wup->input_files.size(); i++) {
fref = wup->input_files[i];
fip = fref.file_info;
get_pathname(fref.file_info, file_path);
retval = setup_file(wup, fip, fref, file_path, slot_dir);
if (retval) return retval;
}
}
// set up output files
//
for (i=0; i<result->output_files.size(); i++) {
fref = result->output_files[i];
fip = fref.file_info;
get_pathname(fref.file_info, file_path);
if (first_time) {
for (i=0; i<result->output_files.size(); i++) {
fref = result->output_files[i];
fip = fref.file_info;
get_pathname(fref.file_info, file_path);
retval = setup_file(wup, fip, fref, file_path, slot_dir);
if (retval) return retval;
}

View File

@ -188,9 +188,8 @@ bool CLIENT_STATE::handle_finished_apps() {
return action;
}
// Returns true if all the input files for a result are present
// Returns true iff all the input files for a result are present
// (both WU and app version)
// false otherwise
//
bool CLIENT_STATE::input_files_available(RESULT* rp) {
WORKUNIT* wup = rp->wup;
@ -215,6 +214,7 @@ bool CLIENT_STATE::input_files_available(RESULT* rp) {
for (i=0; i<wup->input_files.size(); i++) {
fip = wup->input_files[i].file_info;
if (fip->generated_locally) continue;
if (fip->status != FILE_PRESENT) return false;
if (fip->verify_file(false)) return false;
}

View File

@ -91,7 +91,7 @@ int CLIENT_STATE::make_project_dirs() {
// 2) if a needed file is already on disk (PERS_FILE_XFER::start_xfer())
// 3) in checking whether a result's input files are available
// (CLIENT_STATE::input_files_available()).
// In this case "strictI is false,
// In this case "strict" is false,
// and we just check existence and size (no checksum)
//
// If a failure occurs, set the file's "status" field.