Select Git revision
notes 9.69 KiB
Abstractions
--------------------
Client files
two main files:
prefs.xml
user preferences.
includes list of projects; for each:
master URL
authenticator
project-specific prefs
resource share
prefs mod time
client_state.xml
hostid
per-project info
list of sched servers for project
project name
hostid
next_request_time
rpc_seqno (specific to this host)
work info
files, WUs, results etc.
NOTES
- On startup, if there's no prefs.xml, the client prompts
for a master URL and authenticator,
and creates an initial prefs.xml with a zero mod time
(so that any web-created prefs file will override)
- We need to safeguard against a buggy scheduling server
sending back an incomplete or empty prefs file.
Suggestions:
1) verify that at least the responding project is present in the prefs;
(or contain at least 1 project)
2) back up the old prefs file (prefs.xml.date)
- prefs.xml has priority over client_state.xml
If there's a project in prefs with no counterpart in client_state,
a new entry in client_state is created.
Entries in client_state absent from prefs are deleted.
- to "clone" an installation on a new computer,
just need to copy the core client (or run the installer)
then copy the account.xml file.
- a scheduler request can specify that no client_state.xml
was found, so a new host record should be created.
--------------------
When does client contact scheduling server?
Each result has a max notification delay,
so when a client completes it there's a deadline for notification.
Contact a scheduling server if:
- you're below the low-water mark in work for that project,
or you have a result past its deadline
- AND there's no delay in effect for that project.
A delay may be explicitly returned by the scheduling server,
or may be because of exponential backoff after failed attempts.
--------------------
Given that we can estimate the time it will take to get back
a result from a given host, it might be possible to assign
deadlines to results, and only send them to hosts that are fast enough
--------------------
Client logging
write events to log file:
start/stop client
start/finish file xfer
start/finish application execution