mirror of https://github.com/BOINC/boinc.git
allow locally-generated input files
svn path=/trunk/boinc/; revision=10055
This commit is contained in:
parent
b88d0a10d0
commit
527f0a4852
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue