Now delete files in increasing mtime order
Additional paranoia to avoid deleting 'the wrong' files if there
is a configuration or other user/admin error
Use C++ string type for storage efficiency in list
Only delete antique files when there is no OTHER file deletion to do
svn path=/trunk/boinc/; revision=7461
If this switch is enabled on the command line, then
periodically (once per hour) removes any files in the
upload/ directory that are older than the oldest WU in the
database. These files are created when BOINC clients
return work really late after the deadline -- so late that
the corresponding WU has been deleted from the database.
About half the results in the E@H upload/ directory were
of this form. The 'find' command is used to locate such
files. This is potentially a dangerous operation since
if we find then delete the wrong file(s) all hell could
break lose on the server. So a lot of 'paranoia and
sanity checking' is done before unlink(path) is called,
and we bail out at the first sign of something odd.
svn path=/trunk/boinc/; revision=7208
file an output file for a SUCCESSFUL result. Failure to
find an output file for an UNSUCCESSFUL result is OK, and
just logged at level DEBUG.
svn path=/trunk/boinc/; revision=7184
[1] WU error flag set
[2] WU already has canonical result
[3] (report_deadline - current_time) < 25% of WU delay bound
If any of these conditions is true, set the report deadline to the
current time and set the WU transition time to the current time.
The transitioner will then 'do the right thing'.
svn path=/trunk/boinc/; revision=6871
(1) Put core client version number into wreq BEFORE searching for
an app version. Problem is that reply.wreq.core_client_version was only being set in
send_work(), which was too late for the resend_lost_work() part
of the code. You might want to move all the initialization of reply.wreq
out of send_work(). The core client version is needed to see if the
app is compatible with it when calling get_app_version().
(2) In retransmitting lost work, do NOT set the deadline to new
values. Else the result will never time out! But DO reset
the sent_time, to indicate that result was resent.
transitioner:
In the transitioner, make the next WU transition time be the min
of deadlines of the in progress results, NOT the min of the
sent_time+delay bound. Unless a project wants to do dynamic
adjustment of delay bounds for in progress results this should be OK.
CPDN people: I don't think this does any harm for trickles but
you might want to give it a quick look to be 100% sure.
svn path=/trunk/boinc/; revision=6870
values. Else the result will never time out! (David, would it be OK to
simply modify the send_time but NOT the deadline? This would make it easy
to see in the database that the result is being resent.)
svn path=/trunk/boinc/; revision=6868
scheduler.
Problem is that reply.wreq.core_client_version was only being set in
send_work(), which was too late for the resend_lost_work() part
of the code. You might want to move all the initialization of reply.wreq
out of send_work(). The core client version is needed to see if the
app is compatible with it when calling get_app_version().
svn path=/trunk/boinc/; revision=6867
than 24 hours away, to prevent thrashing. But this delayed
reissuing of new results. For example if two results were
issued a hours 17 and 18, and both timed out (no reply). At
time 17+deadline the first would time out and a new result
would be issued. But then instead of setting the transition
time to 18+deadline it would be set to 18+deadline+1 day.
To prevent thrashing I have fixed this so that if a transition
time is in the past, I advance it by TWICE the amount it is late,
but never less than 1 minute or more than 1 day.
- Ops pages: show unsent/in-progress results in purple. For
unsent results show create time rather than deadline.
svn path=/trunk/boinc/; revision=6637