Add --post_assigned_credit option to validator.
If set, it gets claimed credit from result.claimed_credit
(put there by project's init_result() function).
The claimed credit of the canonical result is the job's granted credit.
Also changed --credit_from_runtime so that it averages
claimed credit across instances,
instead of just using the canonical instance.
Also modify db_dump to exclude user records whose authenticator starts
with 'deleted' or host domain names that equal 'deleted'. Those values
are set by the obfuscate delete method.
Add the server parts of the scheme described here:
https://boinc.berkeley.edu/trac/wiki/SimpleAttach
This includes:
- add login_token table and function for creating login tokens
- add Web RPC login_token_lookup.php for mapping token to auth
- change concierge protocol to take project ID and login token
- update download.php so that it gets client version info
from versions.xml (from BOINC web site)
and displays buttons with OS name, versions and file sizes
like on the BOINC download page
- make "register.php" work
I've tested this all the way through downloading the installer file
with the augmented name.
Changes to the installer and client are needed to complete the system.
- add DB field for storing job keywords: workunit.keywords
add this to various DB parse/write functions
- add --keywords option to create_work for specifying job keywords
- add <keyword_sched> option in config.xml for enabling keyword score
(it's disabled by default).
If set, increment score for "yes" keyword matches,
and disallow jobs with "no" matches
- in scheduler, add array job_keywords_array for parsed versions
of job keywords (vector<int>)
also:
- use symbols instead of numbers for slow_check() return values
- parse unused fields in req message to remove unparsed-XML warnings
Originally, the idea for remote file management was that
the physical name of a file was its md5, or jf_md5.
This was changed to let the submitter choose the name.
But in the DB (job_file.md5) we only kept 64 chars.
Change the field name to job_file.name, and change it to varchar(255)
negative values are stored in app_version_id fields to represent
anonymous platform versions.
So need to use %ld rather than %lu for these fields.
Also there were a couple of more changes of int do DB_ID_TYPE
The SETI@home result table is about to run out of 32-bit IDs,
so we need to move to 64-bit result IDs.
This will happen to the workunit table at some point too.
I changed the server C++ code to use the "long" type for all DB IDs
(and to use appropriate conversion codes like %lu).
"long" is 64 bit on 64-bit machines.
For uniformity I did this for all tables,
even ones (like app) that will never get big.
I chose NOT to change the DB schema for now.
The new code will work with 32-bit ID fields in the DB.
As projects approach the 32-bit limit on a table they can change
its ID field, and fields that reference this table, to BIGINT.
This is likely to happen only on the result and workunit tables.
I put functions in html/ops/db_update.php
to change the IDs of these tables.
The query to get counts of unsent results for various size classes
did a sequential scan, which isn't practical for large projects.
All we care about is the count up to a certain (low) limit,
so I replaced it with an enumeration with a limit, and count the results.
In "strict mode", inserts fail if they don't supply values
for columns with no default defined in the schema
(in non-strict mode, 0 and '' are implicit defaults).
Starting with MySQL version 5.6, strict mode is the default.
This breaks some of the BOINC web code,
which does inserts without giving values to some columns.
There are two ways to solve this:
1) change the schema to give defaults everywhere
2) change the PHP code to supply values for more columns.
I'm using 1) in some cases and 2) in others.
This commit fixes some of the errors; there are others.