In work fetch setup, we were computing rsc_project_reason
before doing the round-robin simulation.
It needs to be done after, because it uses the # of idle devices,
which is computed by the simulation.
In deciding whether to schedule needs_network tasks,
we were looking at gstate.network_suspended.
The problem is that this remains false for 5 minutes
after any GUI RPC that could generate network activity.
Instead, look at gstate.file_xfers_suspended.
The following should apply to GPUs but not other coprocs (e.g. miner ASICs):
- "suspend GPUs" command in GUI
- prefs for suspending GPUs
- always removing app from memory when suspended
If a scheduler reply contains a result we already have,
and the report deadline is different, update it.
Notes:
- report deadlines are based on server time.
If there's clock skew between client and server, things are off.
This is a design flaw, but too late now.
- server-side support for adjusting deadlines isn't there yet
There's no need for this since the bodies are stored in CDATA.
Doing so causes a bug:
if a notice body contains an entity (like &)
and we get the same notice from an RSS feed,
the 2 notices are treated as separate
since the old copy is unescaped and the new one isn't.
This leads to confusion;
e.g. if you do "read config files" it will look for cc_config.xml
in the new directory, not find it, and set default options.
Also, log files end up in old directory.
Also, gui_rpc_auth.cfg will be in new directory,
and the Manager won't look there.
When a project is reset, the client deletes all the files from its dir
that BOINC knows about.
However, there may be other files, created by its apps.
On Android, where space is likely to be scarce,
delete these when the project is reset.
Maybe we should do this on all projects.
But we'd need to not to delete user-created files
like app_config.xml, and anonymous-platform stuff
like app_info.xml and the app files.
- get_project_config.php: if project supports LDAP,
advertise this to the client.
- Manager: if project supports LDAP, say "Email address or LDAP ID"
in Attach Project wizard,
and don't do email address validation.
- lookup_account GUI RPC (client side): if passing an LDAP ID,
don't lowercase it, and don't hash passwd
- lookup_account GUI RPC (server side): if passing an LDAP ID,
pass appropriate URL args to Web RPC
- lookup_account Web RPC: in LDAP case, pass "ldap_auth" arg,
and pass "ldap_uid" and "passwd".
Handle these appropriately.
Use "postponed" to describe tasks that called boinc_temporary_exit()
and are waiting to be run again, in
- the manager Tasks tab (replace "Waiting to run (Scheduler wait: x"))
- event log (replace "task called temporary_exit()")
- notices (replace "Can't run task")
- Remove code that tries to keep track of available GPU RAM
and defer jobs that don't fit.
This never worked, it relied on project estimates of RAM usage,
and it's been replaced by having the app do temporary exit
if alloc fails.
- Move logic for checking for deferred jobs from CPU
to work fetch.
- Rename rsc_defer_sched to has_deferred_job,
and move it from PROJECT to RSC_PROJECT_WORK_FETCH
- tweak work_fetch_debug output
The logic for deciding whether to fetch work for a project
or a (project, resource type) pair
was scattered among several functions, with confusing names.
Consolidate this logic, and use consistent names.