- Added command-line options -preserve_wu_file and -preserve_result_files

to the file deleter.  This are useful to implement <no_delete/>
      for all input or output files respectively.
- Documented <no_delete/> file tag.

svn path=/trunk/boinc/; revision=4675
This commit is contained in:
Bruce Allen 2004-11-29 09:23:51 +00:00
parent 13a1964bc3
commit bdfb8e143f
3 changed files with 76 additions and 19 deletions

View File

@ -19631,11 +19631,14 @@ David 16 Nov 2004
validate_util.C
Bruce 16 Nov 2004
- Fix bug in ops pages displaying counts of zero if 'additional clauses' includes string
names such as name='first_workunit'
- Result summary pages corrected for boundary condition errors in arrays and to cover
additional result.outcome==6 case. Result summaries now sum correctly over outcomes!
- Add validate state to result tables, color code for validate state information
- Fix bug in ops pages displaying counts of zero if 'additional
clauses' includes string names such as name='first_workunit'
- Result summary pages corrected for boundary condition errors in
arrays and to cover additional result.outcome==6 case. Result
summaries now sum correctly over outcomes!
- Add validate state to result tables, color code for validate
state information
html/inc/
db_ops.inc
util_ops.inc
@ -19706,10 +19709,12 @@ Bruce 17 Nov 2004
all possible states (including ones with value 0) and
eliminated the 'Unknown' values that previously appeared on the form.
These were in error. This is a clean fix, by defining (for example)
outcome='CHOOSE_ALL', eg a non-numerical value, for the 'select ALL' case.
outcome='CHOOSE_ALL', eg a non-numerical value, for the 'select
ALL' case.
- Added a select menu for validate_state to the RESULT form.
- In forms for outcome, validate_state, client_state and server_state, indicate
numeric values (helpful if using additional clauses for more sophisticated queries)
- In forms for outcome, validate_state, client_state and
server_state, indicate numeric values (helpful if using
additional clauses for more sophisticated queries)
html/inc/
db_ops.inc
html/ops/
@ -19985,8 +19990,10 @@ Bruce 20 Nov 2004 UTC
in building it, since CVS replaces $Id:... with a complete version ID
string. Declaration is volatile so that the compiler won't remove
it even under agressive optimizations.
- Fixed initialization bug where calling boinc_init_graphics() would not initialize
options correctly, creating lockfile/finished havoc in graphics APP. Thanks Reinhard!
- Fixed initialization bug where calling boinc_init_graphics()
would not initialize options correctly, creating
lockfile/finished havoc in graphics APP. Thanks Reinhard!
David, please bless this.
ALL files of form *.C affected.
@ -20256,8 +20263,10 @@ Bruce and Reinhard 2004-11-26
under Mac OSX. Also make dist now works (make distcheck still
broken). Karl, since you were the last
person to fix up this mess, how about taking a look??
- Added placeholders in sched/ for user: assimilator_placeholder.C and validator_placeholder.C.
These are built by the build system, but can be replaced by user code as desired.
- Added placeholders in sched/ for user: assimilator_placeholder.C
and validator_placeholder.C.
These are built by the build system, but can be replaced by user
code as desired.
Makefile.am
configure.ac
@ -20290,8 +20299,11 @@ Bruce and Reinhard 2004-11-26
boinc_db.inc [removed: this file is autogenerated]
Bruce 2004-11-27
- Added a -dont_update_db command-line option to assimilator.C which prevents it from updating
the database, and so is useful for testing.
- Added a -dont_update_db command-line option to assimilator.C
which prevents it from updating the database, and so is useful
for testing.
sched/
assimilator.C
@ -20302,6 +20314,18 @@ Karl 2004-11-27
db_base.py
Bruce 2004-11-28
- Sanity check args to parse_str(doc, tag, ...) and return false if !doc, !tag, or !strlen(tag)
- Sanity check args to parse_str(doc, tag, ...) and return false
if !doc, !tag, or !strlen(tag)
lib/
parse.C
Bruce 2004-11-29
- Added command-line options -preserve_wu_file and -preserve_result_files
to the file deleter. This are useful to implement <no_delete/>
for all input or output files respectively.
- Documented <no_delete/> file tag.
sched/
file_deleter.C
doc/
files.php

View File

@ -27,6 +27,7 @@ A file is described by an XML element of the form
[ &lt;upload_when_present/> ]
[ &lt;sticky/> ]
[ &lt;signature_required/> ]
[ &lt;no_delete/> ]
&lt;/file_info>
</pre>
The elements are as follows:
@ -58,6 +59,16 @@ the file should be retained on the client after its initial use.");
list_item("signature_required", "If present,
indicates that the file should be verified with an RSA signature.
This generally only applies to executable files.");
list_item("no_delete", "If present for an input (workunit) file,
indicates that the file should NOT be removed from the download/
directory when the workunit is completed. You should use this
if a particular input file or files are used by more than one
workunit, or will be used by future, unqueued workunits.");
list_item("no_delete", "If present for an output (result) file,
indicates that the file should NOT be removed from the upload/
directory when the corresponding workunit is completed. This is
probably a bad idea since your upload/ directory will eventually
overflow!");
list_end();
echo "
These attributes allow the specification of various types of files: for

View File

@ -1,3 +1,4 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
static volatile const char *BOINCrcsid="$Id$";
// The contents of this file are subject to the BOINC Public License
// Version 1.0 (the "License"); you may not use this file except in
@ -45,7 +46,7 @@ int wu_delete_files(WORKUNIT& wu) {
int count_deleted = 0, retval;
safe_strcpy(buf, wu.xml_doc);
p = strtok(buf, "\n");
strcpy(filename, "");
while (p) {
@ -60,7 +61,7 @@ int wu_delete_files(WORKUNIT& wu) {
retval = dir_hier_path(
filename, config.download_dir, config.uldl_dir_fanout,
pathname
);
);
if (retval) {
log_messages.printf(SCHED_MSG_LOG::CRITICAL, "[%s] dir_hier_path: %d\n", wu.name, retval);
} else {
@ -125,6 +126,10 @@ int result_delete_files(RESULT& result) {
return 0;
}
// set by corresponding command line arguments.
static bool preserve_wu_files=false;
static bool preserve_result_files=false;
// return nonzero if did anything
//
bool do_pass() {
@ -139,7 +144,9 @@ bool do_pass() {
sprintf(buf, "where file_delete_state=%d limit 1000", FILE_DELETE_READY);
while (!wu.enumerate(buf)) {
did_something = true;
wu_delete_files(wu);
if (!preserve_wu_files)
wu_delete_files(wu);
wu.file_delete_state = FILE_DELETE_DONE;
sprintf(buf, "file_delete_state=%d", wu.file_delete_state);
retval= wu.update_field(buf);
@ -154,7 +161,8 @@ bool do_pass() {
sprintf(buf, "where file_delete_state=%d limit 1000", FILE_DELETE_READY);
while (!result.enumerate(buf)) {
did_something = true;
result_delete_files(result);
if (!preserve_result_files)
result_delete_files(result);
result.file_delete_state = FILE_DELETE_DONE;
sprintf(buf, "file_delete_state=%d", result.file_delete_state);
retval= result.update_field(buf);
@ -179,6 +187,20 @@ int main(int argc, char** argv) {
asynch = true;
} else if (!strcmp(argv[i], "-one_pass")) {
one_pass = true;
} else if (!strcmp(argv[i], "-preserve_wu_files")) {
// This option is primarily for testing. If enabled, the
// file_deleter will function 'normally' and will update
// the database, but will not actually delete the workunit
// input files. It's equivalent to setting <no_delete/>
// [undocumented] for all workunit input files.
preserve_wu_files = true;
} else if (!strcmp(argv[i], "-preserve_result_files")) {
// This option is primarily for testing. If enabled, the
// file_deleter will function 'normally' and will update
// the database but will not actually delete the result
// output files. It's equivalent to setting <no_delete/>
// [undocumented] for all result output files.
preserve_result_files = true;
} else if (!strcmp(argv[i], "-d")) {
log_messages.set_debug_level(atoi(argv[++i]));
} else {