(whereas they didn't do this w/ older clients).
On Windows, the client uses TerminateProcess(h, 1) to kill processes;
the 1 is the exit code the process will appear to have.
So instead, add a "will_restart" bool arg to the various kill
functions, and if set use 0 (= STATUS_SUCCESS),
otherwise use EXIT_ABORTED_BY_CLIENT.
Note: in principle this shouldn't make any difference
for quitting tasks,
since handle_exited_app() checks for task state QUIT_PENDING
and ignores the exit code in that case.
The only place I can see where it would make any difference
is when we kill a process because it hasn't been handling
queued shared-memory messages for 180 seconds.
- client: add more info to the message about an exited app
- client: function return values (ERR_*) are different from
process exit codes (EXIT_*).
But in many places we were using return values as exit codes.
Fix these.
Also, break out the different types of limits a job can exceed
(time, disk, memory) into difference exit codes.
svn path=/trunk/boinc/; revision=25601
compute capability 3.x.
Not sure if the parameters are right
(128 cores/proc, 2 flops/clock)
but they're better than nothing.
- web: don't allow user names that have leading or trailing white space,
or HTML tags, or are empty
svn path=/trunk/boinc/; revision=25485
1) if an APP_VERSION is missing a coprocessor,
don't delete it and its files.
(If the coprocessor returns, we won't need to re-download)
2) if a RESULT uses an app version that is missing a coprocessor,
abort it (rather than deleting it).
The client will report the result on the next scheduler RPC,
and the server will make a new instance.
svn path=/trunk/boinc/; revision=19235
- client: abort runaway jobs based on elapsed time instead of CPU time.
Specifically, abort jobs for which
elapsed time > WU.rsc_fpops_bound / app_version.flops
This policy works for
1) GPU jobs (which may use little CPU time)
2) jobs that run but because of bugs use little CPU time
(e.g., because they're sleeping)
whereas the old policy didn't.
svn path=/trunk/boinc/; revision=17399
This fixes a bug that can cause debts to NEVER get updated.
- client: added "abort_jobs_on_exit" feature
(available by --abort_jobs_on_exit cmdline
or <abort_jobs_on_exit> in cc_config.xml).
If set, when the client is exited by user request
(this includes signals on Unix)
it marks all pending jobs as aborted,
and does a scheduler RPC to all projects with jobs.
When these are completed the client exits.
This is useful when BOINC is being used on grids
where it is wiped clean after each run.
svn path=/trunk/boinc/; revision=17300
- scheduler: fix bug in adaptive replication:
if send an unreplicated job to untrusted host,
set both wu.target_nresults and wu.min_quorum to app.target_nresults.
svn path=/trunk/boinc/; revision=15762
- change ERR_CHILD_FAILED TO EXIT_CHILD_FAILED
(it's an exit code, not a function error code)
- client: reduce severity of benchmark error
- scheduler: compile fix
svn path=/trunk/boinc/; revision=15423
- update_versions: use __ (not :) as separator for plan class
- client: add plan_class to APP_VERSION;
an app version is now identified by platform/version/plan_class
- client CPU scheduler: don't assume apps use 1 CPU
- client: add avg_ncpus, max_cpus, flops, cmdline to RESULT
- scheduler: implement app planning scheme
Other changes:
- client: if symlink() fails, make a XML soft link instead
(for Unix running off a FAT32 FS)
- client: don't accept nonpositive resource share from AMS
- daemons and DB: check for error returns from enumerations,
and exit if so. Thus, if the MySQL server goes down,
all the daemons will soon exit.
The cron script will restart them every 5 min,
so when the DB server comes back up so will the project.
- web: show empty max CPU % as ---
- API: get rid of all_threads_cpu_time option (always the case now)
svn path=/trunk/boinc/; revision=14966
This will allow applications to access shared libraries
by their logical names,
which simplifies things when you have multiple platforms,
and the apps (or libraries) refer to shared libraries
by names that don't include the platform.
This shouldn't impact the API - boinc_resolve_filename()
will open the file, see that it's not an XML link file,
and the symbolic link will be used directly.
At some point we can change boinc_resolve_filename() on Unix
to be a no-op if the client is 6.2+
- client (Unix):
Append the slot dir to LD_LIBRARY_PATH.
svn path=/trunk/boinc/; revision=14944
It works, at least in my test case.
- boinc_submit script:
show status every 10 seconds until completed
add --wait option to show status for previous submission
- Added get_logical_name() in validate_util.C
- create_work: change default target_nresults from 5 to 2,
max_error_results from 10 to 3,
max_total_results from 20 to 10,
max_success_results from 10 to 6
- boinc_cmd: show full usage if no args
- project setup: copy single_job_assimilator
svn path=/trunk/boinc/; revision=14847
like source code and text files. I skipped to check most files in html/
and mac_*/ though.
- Added svn:executable to tools/watch_tcp because it has a shebang.
svn path=/trunk/boinc/; revision=13819
- move client sandbox-specific code to a new file, sandbox.C
- remove g_use_sandbox from util.C; move to MainDocument.cpp (manager)
and sandbox.C (client)
- don't declare check_security() in util.h; it's not in util.C
- don't call remove_project_owned_file_or_dir() in
boinc_delete_file_aux() or boinc_rmdir();
rather, at the points in the client that delete
dirs that are usually owned by boinc_projects,
call remove_project_owned_file_or_dir() first,
then clean_out_dir().
- rename boinc_exec() to switcher_exec() and move it to sandbox.C
Note: this change was sparked by needing to remove a call to getgrnam()
from boinclib, to avoid requiring the same version of glibc
on both compile and target hosts
svn path=/trunk/boinc/; revision=13784
in error_numbers.h. In the future, when adding a new error number
to this file, please update boincerror() in util.C to contain a
short text description of the error.
svn path=/trunk/boinc/; revision=5996