even if we already have the APP_VERSION.
Otherwise, when upgrading from 5.10 to 6.2,
we won't have the api_version,
and we won't learn about it until project releases new version.
svn path=/trunk/boinc/; revision=15277
in scheduler request; the latter breaks older schedulers.
- old parse code: make skip_unexpected() work with <x/>
svn path=/trunk/boinc/; revision=15027
send <client_cap_plan_class/> if client understands
app version plan class.
The server checks for this instead of version > 6.11.
- clean up unix_util: .h files declare only (extern) interfaces;
no reason for daemon() to be C
svn path=/trunk/boinc/; revision=15006
in <app_version>s from the server,
keep track of the number free of each type of coproc,
and don't run an app that needs more than are available.
(not quite working yet)
svn path=/trunk/boinc/; revision=14992
in server->client reply messages and in the client itself,
move app-planning info from RESULT to APP_VERSION.
This was necessary to allow anonymous platform info (app_info.xml)
to specify avg_ncpus, etc.
e.g., if someone wants to write a multithread version of SETI@home,
or a GPU/CUDA version,
they can run it using the anonymous platform mechanism
and it will be scheduled correctly.
If a server sends an existing APP_VERSION but with different
app-planning info, the client will accept and use the new info.
svn path=/trunk/boinc/; revision=14978
- 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
if no results are returned.
Also, made the "Deferred" messages conditional on sched_op_debug
Fixes#430 (from Rattledagger)
svn path=/trunk/boinc/; revision=13849
"task" instead of "result";
"computer" instead of "host";
"scheduler request" instead of "scheduler RPC"
"access to Internet" instead of "access to reference web site"
svn path=/trunk/boinc/; revision=13774
- client: parse <cpid_time> in scheduler reply;
add cpid_time field to PROJECT.
This defaults to the user_create_time.
In deciding which CPID to send in a scheduler request,
use the one with oldest cpid_time (not user_create_time).
This is the client half of fixing a bug that causes
CPID to flip/flop between to values in a certain case.
svn path=/trunk/boinc/; revision=13531
for WUs of different applications
(need to count unsent results separately by app)
- feeder: major code cleanup
- application interleaving (for -allapps) is now done
by building a static slot-to-app array "app_indices".
Fractional weights now work correctly.
- enum sizes (for -allapps) are now precomputed
in an array "enum_sizes"
- rename "found" (confusing!!) to "collision"
- swapped the names of mod_select_clause and select_clause,
to reflect what they actually are
- file deleter: in finding oldest WU, order by id instead of create_time
(there's no index on create_time)
- user web: show "merge by name" only to host owner
- add cpu_scheduler_period() member to GLOBAL_PREFS
(so you don't have to multiply by 60 everywhere)
- infinite() fix for HPUX
client/
cpu_sched.C
cs_cmdline.C
cs_scheduler.C
rrsim_test.C
sim.C
work_fetch.C
html/user/
hosts_user.php
lib/
parse.h
prefs.h
sched/
feeder.C
file_deleter.C
make_work.C
sample_work_generator.C
sched_util.C,h
tools/
updater.C
svn path=/trunk/boinc/; revision=12968
if the initial sched request failed,
the manager would show "communicating" for 60 sec,
then time out and show "failed to attach".
But the project would actually be attached.
This was due to a logic error,
but I fixed it in a more fundamental way:
by considering an attach to be complete immediately,
without waiting for a successful scheduler RPC.
This was originally done to ensure that the URL and account key were valid.
But when using the BOINC Manager, we've already verified
both of these before doing the attach project RPC.
When using boinc_cmd, you now have to check for messages
indicating a bad URL or account key.
I changed things to print these messages on every sched RPC.
Implementation: the notion of "tentative project" no longer exists.
client/
client_state.C,h
client_types.C,h
cs_account.C
cs_benchmarks.C
cs_scheduler.C
gui_rpc_server_ops.C
scheduler_op.C
sim.C
sim_util.C
svn path=/trunk/boinc/; revision=12663
if get an app_version with unknown platform name, ignore it.
This means that, e.g. if someone moves a BOINC directory
from Intel to PowerPC Mac, things will still work right.
client/
client_state.C,h
cs_platforms.C
cs_scheduler.C
cs_statefile.C
svn path=/trunk/boinc/; revision=12579
Remove the tacet assumption that a host can handle
applications for a single platform.
With the Apr 30 scheduler changes,
a project may (at different times)
send app versions for the same app and version number,
but different platforms.
Before we would have ignored all but the first;
now we handle them correctly.
Implementation notes:
- Add APP_VERSION.platform, RESULT.platform,
and RESULT.version_num.
If these are missing from an XML doc
(e.g. an existing state file or a scheduler reply
from a project not running current server)
then set to the primary platform.
- Continue to write workunit.version_num
and active_task.version_num to state file,
even though these are no longer part of the struct.
This allows users to revert to an older version.
client/
app.C
check_state.C
client_state.C,h
client_types.C,h
cs_apps.C
cs_scheduler.C
cs_statefile.C
sim.C
svn path=/trunk/boinc/; revision=12542
* refactored the alternate platform mechinism so that we
can support multiple alternate platforms.
* moved everything to cs_platforms.C since we expect the
kind of sprawl that is in host_info.C on the *nix
environments.
- Clean up some warnings
client/
acct_setup.C
client_state.C, .h
client_types.h
cs_platforms.C (Added)
cs_scheduler.C
cs_statefile.C
http_curl.C
lib/
str_util.h
svn path=/trunk/boinc/; revision=12531
- Exteded the "altername_platform" mechanism to x86_64 linux
and solaris. The current alternate platforms found by configure
are...
x86_64-pc-linux-gnu -> i686-pc-linux-gnu
sparc64-sun-solaris -> sparc-sun-solaris
sparc-sun-solaris -> sparc-sun-solaris2.7
powerpc64-apple-darwin -> powerpc-apple-darwin
- The alternate platform can be overridden on the configure command line
--with-boinc-alt-platform="platformname"
m4/
boinc_platform.m4
sched/
Makefile.am
client/
client_state.C
cs_scheduler.C
client_state.h
svn path=/trunk/boinc/; revision=12467
- Match the client-side and server-side XML for alternate
platforms.
- Print both the max active memory usage and max idle
memory usage after all the preference information has
been parsed.
client/
cs_prefs.C
cs_scheduler.C
svn path=/trunk/boinc/; revision=12425
- Fix a minor compile problem on 64-bit Windows platforms with the
call to SetTimer.
- fixes#80: Introduce the notion of an alternate platform for 64-bit
Windows clients, which can also run 32-bit Windows apps.
TODO: We'll need to refactor the whole platform section in the
scheduler request creation section so that it can handle
multiple alternate platforms and for Linux/Mac.
api/
windows_opengl.C
client/
client_state.C, .h
cpp.h
cs_scheduler.C
svn path=/trunk/boinc/; revision=12421