Commit Graph

726 Commits

Author SHA1 Message Date
David Anderson 75c6032043 - fix typo in DB schema
- msg tweaks in make_project


svn path=/trunk/boinc/; revision=24253
2011-09-22 03:15:21 +00:00
David Anderson 9d2ba11e09 - back end: extend the access control system for remote job submission
and other operations.
    You can now designate a user as "manager" for a particular app.
    They can then:
    - control job-submit permissions for that app
    - deprecate/undeprecate versions of the app.
    - abort jobs for that app

    You can also designate a user a manage for the project.
    They can then edit permissions and quotas,
    as well as performing the app-specific functions for all apps.

    This is described here:
    http://boinc.berkeley.edu/trac/wiki/MultiUser#Accesscontrol

    This required some changes to the DB schema.


svn path=/trunk/boinc/; revision=24250
2011-09-21 21:26:00 +00:00
David Anderson a886e0be7c - transitioner: fix bug related to new runtime_outlier field
svn path=/trunk/boinc/; revision=24228
2011-09-16 20:42:45 +00:00
David Anderson e49f945908 - Validator: allow project-specific code to mark a result
is a "runtime outlier", i.e. its runtime does
    not correspond to the job's rsc_fpops_est.
    Runtime outliers are not counted in the statistics for
    elapsed time, turnaround time, and peak FLOPs count.

    The is intended for applications like SETI@home,
    some of whose jobs finish more or less instantly
    (this happens if the data contains a lot of interference).
    If a host happens to get a bunch of these short jobs,
    its statistics will get skewed: in essence, the server
    will think that the host is extremely fast,
    and will send it too many jobs.


svn path=/trunk/boinc/; revision=24225
2011-09-16 16:43:15 +00:00
David Anderson 176b0a4327 - validator: add a --credit_from_runtime option.
This assigns credit proportional to runtime*p_fpops.
    To prevent cheating, p_fpops is capped at the 95th percentile value
    among active hosts,
    and runtime is capped at a specified limit.
    This option supports apps, like LHC's CERNvm app,
    that run for a certain amount of time and then exit.
    The CreditNew system doesn't work for such apps.
- trickle_credit:
    To prevent cheating,
    cap p_fpops at the 95th percentile value among active hosts,
    and require a limit on runtime.
- require that trickle handlers supply an initialization function


svn path=/trunk/boinc/; revision=24182
2011-09-13 21:01:42 +00:00
David Anderson b80f1525f6 - feeder: change the DB query to skip jobs for deprecated apps.
Otherwise, if you have a deprecated app with >= 200 jobs
    (200 is the query's limit)
    it could always get jobs for that app,
    and never put anything into the cache.


svn path=/trunk/boinc/; revision=24142
2011-09-07 19:57:46 +00:00
David Anderson 8c49c174c3 - preliminary stuff for mechanism where privileged users
can create apps and app versions
- crontab commands should be preceded by cd to project root


svn path=/trunk/boinc/; revision=24137
2011-09-07 06:54:44 +00:00
David Anderson 7c81d72378 - web: fix warnings in forum pages
- scheduler: when using elapsed time stats to predict runtime,
    cap the estimated FLOPS at twice the peak FLOPS;
    otherwise, if a host has received a lot of very short jobs
    recently, it will get a too-high FLOPS estimate and
    will exceed the rsc_fpops_bound limit.


svn path=/trunk/boinc/; revision=24128
2011-09-05 17:29:53 +00:00
David Anderson c5c5975b44 - Improve interface of XML_PARSER.
Add parsed_tag and is_tag to the class,
    so that parsing functions don't need to declare them
    and pass them around.
- Complete the task of using XML_PARSER as the argument
    to all parsing functions.
    (Internally, many of these functions still use the old XML parser;
    that's the next step.)


svn path=/trunk/boinc/; revision=23978
2011-08-10 17:11:08 +00:00
David Anderson 271699ea0a - server: fix typo
svn path=/trunk/boinc/; revision=23904
2011-07-30 22:42:05 +00:00
David Anderson 6e5acbbe60 - web: remote job submission:
- add fields to batch table, extend APIs accordingly
    - require that example web interface run on BOINC server
        (this makes many things easier;
        an actual remote interface would require a bit more work)


svn path=/trunk/boinc/; revision=23881
2011-07-27 06:20:48 +00:00
David Anderson 83965db576 - web: more remote job submission code. Not finished.
svn path=/trunk/boinc/; revision=23871
2011-07-25 21:45:53 +00:00
David Anderson 2177a6bd95 - server: restore fpops/intops_cumulative to RESULT
(structure, not table) for AQUA
- client, Windows: when wake up from hibernation,
    get the time before printing log msg


svn path=/trunk/boinc/; revision=23784
2011-06-29 23:00:39 +00:00
David Anderson 4403df42d8 - client: add <type> element to <exclude_gpu> config option,
in case of multiple GPU types


svn path=/trunk/boinc/; revision=23777
2011-06-25 05:13:56 +00:00
David Anderson 8a9605e48c - web: add a web-service interface for remotely submitting, querying
and controlling batches of jobs
- web: add an administrative interface for controlling
    user permissions for submitting jobs
- web: add an interface where users can view and control
    their submitted jobs
See: http://boinc.berkeley.edu/trac/wiki/RemoteJobs
This is at a functional but rough stage.


svn path=/trunk/boinc/; revision=23762
2011-06-21 22:56:15 +00:00
David Anderson 61cbe110ef - web: when creating an item in News forum,
show "Export as Notice?" checkbox, and default to off.


svn path=/trunk/boinc/; revision=23721
2011-06-14 05:42:52 +00:00
David Anderson 93add14614 - backend: use new XML parser for input template files
(so that they don't have to be 1 element/line)
    and also allow optional <input_template> root element
- fix bug in WORKUNIT DB interface


svn path=/trunk/boinc/; revision=23648
2011-06-07 04:12:49 +00:00
David Anderson 436415cfe1 - scheduler, back end: add "homogeneous app version" feature.
Lets you specify, on a per-app basis,
    that all instances should be done using the same app version.
    This is for validation in the presence of GPUs.
- scheduler: code cleanup
    - Instead of adding a bunch of non-DB fields to RESULT,
        used a derived class SCHED_DB_RESULT.
    - Instead of storing a pointer to BEST_APP_VERSION in RESULT,
        store the structure itself.
        This simplifies the memory allocation situation.
- client: condition "Got server request to delete file" messages
    on <file_xfer_debug>


svn path=/trunk/boinc/; revision=23636
2011-06-06 03:40:42 +00:00
David Anderson b6140088e3 - update_versions: trim XML strings
svn path=/trunk/boinc/; revision=23569
2011-05-21 06:22:15 +00:00
Bernd Machenschalk 4fa5f4bd8c Einstein@home extensions:
- protect malloc.h
- validator: allow to update 'random' result field
- assimilator: add global variables results_prefix and transcripts_prefix

svn path=/trunk/boinc/; revision=23241
2011-03-18 08:20:11 +00:00
David Anderson 0bc1a36451 - user web: add a feature allowing project admins to control
whether news items are exported as notices.
    The creator of a news item is shown a "Don't export" or "Export"
    button on the thread page.
    By default, news items are exported.


svn path=/trunk/boinc/; revision=23119
2011-02-28 19:02:59 +00:00
David Anderson 53a7307305 - scheduler: fix nasty bug introduced in [23040]
that caused no jobs to be sent.


svn path=/trunk/boinc/; revision=23096
2011-02-23 21:22:45 +00:00
David Anderson 5421335dbb - transitioner: fix bug that could cause file deletion to not be done
for some WUs
- back end: fix the way "report grace period" is implemented
    old: result.report_deadline (i.e. what's in the DB) and
        the deadline sent to the client are the same.
        Some confusing and incorrect logic in the transitioner
        tries to provide the desired semantics.
    new: result.report_deadline is the deadline sent to the client,
        plus the grace period.
        No logic in the transitioner is needed.


svn path=/trunk/boinc/; revision=23040
2011-02-15 22:07:14 +00:00
David Anderson 3355b66241 - client and scheduler: a client host may have multiple VM systems installed.
TODO: check for VirtualBox on Mac, Linux

svn path=/trunk/boinc/; revision=22704
2010-11-17 23:19:07 +00:00
Rom Walton 1564a49816 - sched: Parse the detected virtual machine software from
the scheduler request so it can be used in plan classes.
        
    db/
        boinc_db.h
    sched/
        sched_types.cpp

svn path=/trunk/boinc/; revision=22703
2010-11-17 20:52:01 +00:00
David Anderson c0612ab77f - make_project: with --test_app, copy all the executables
(for many platforms) from samples/example_app/bin
- make_project: change name of example app from uppercase to example_app.
- update_versions: allow version numbers to not have decimal points
- sample work generator: make app name and template files
    command-line options;
    default to "example_app", "example_app_in.xml", "example_app_out.xml"

svn path=/trunk/boinc/; revision=22667
2010-11-10 00:10:32 +00:00
David Anderson 5911a059dd - compile fix
svn path=/trunk/boinc/; revision=22390
2010-09-20 17:16:44 +00:00
David Anderson 2e00bb3084 - scheduler: fix crashing bug when client reports a large # (1000+)
of results (256KB not enough for query in this case)

svn path=/trunk/boinc/; revision=22389
2010-09-19 03:42:51 +00:00
David Anderson bf56e80bce - tweaks
svn path=/trunk/boinc/; revision=22306
2010-08-29 08:43:40 +00:00
David Anderson 7c51512cbf - transitioner: the format string for a DB query had %.15d instead of %.15e.
That produced a messed-up query that assigned garbage values to:
        host_app_version.turnaround_var
        host_app_version.turnaround_q
        host_app_version.max_jobs_per_day
        host_app_version.consecutive_valid
    To repair these:
        - set turnaround_var and turnaround_q to zero
        - if max_jobs_per_day is outside of
            (0..config.daily_result_quota)
            set it to config.daily_result_quota
        - if consecutive_valid is outside (0..1000), set it to zero
    I added a script, html/ops/repair_21812.php, that does this;
    if you ran server code between [21181] and [21812], run this script.
- scheduler/transitioner: add <debug_quota> log flag
- changed the build system to always use -Wall
    (if we'd done this before, this bug wouldn't have happened)
- fixed a bunch of other compile warnings


svn path=/trunk/boinc/; revision=21812
2010-06-25 18:54:37 +00:00
David Anderson e260b47bd5 - database: app.min_avg_pfc should default to 1, not 0
svn path=/trunk/boinc/; revision=21763
2010-06-17 16:44:33 +00:00
David Anderson ae7866b251 - scheduler: restore scaling of daily quota by # processors
and/or config.gpu_multiplier
- client: msg tweak

svn path=/trunk/boinc/; revision=21753
2010-06-15 22:21:57 +00:00
David Anderson 4147249de2 - server: delete old credit stuff
- user web: show host link in user result list.  Fixes #999


svn path=/trunk/boinc/; revision=21735
2010-06-12 22:08:15 +00:00
David Anderson 8b836a391b - database: remove unused fields from app table
svn path=/trunk/boinc/; revision=21728
2010-06-11 03:50:47 +00:00
David Anderson 89fab4ece5 - back end: change "daily result quota" mechanism.
Old: config.xml specifies an initial daily quota (say, 100).
        Each host_app_version starts out with this quota.
        On the return of a SUCCESS result,
        the quota is doubled, up to the initial value.
        On the return of an error result, or a timeout,
        the quota is decremented down to 1.
    Problem:
        Doesn't accommodate hosts that can do more than 100 jobs/day.
    New: similar, but
        - on validation of a job, daily quota is incremented.
        - on invalidation of a job, daily quota is decremented.
        - on return of an error result, or a timeout,
            daily quota is min'd with initial quota, then decremented.
    Notes:
        - This allows a host to have an unboundedly large quota
            as long as it continues to return more valid
            than invalid results.
        - Even with this change, hosts that return SUCCESS but
            invalid results will continue to get the initial daily quota.
            It would be desirable to reduce their quota to 1.

svn path=/trunk/boinc/; revision=21675
2010-06-02 00:11:01 +00:00
David Anderson 7daae1d0c7 - client: when emerge from bandwidth quota network suspension,
add 0..1hr random delay to existing transfers,
    to avoid DDOS effect

svn path=/trunk/boinc/; revision=21415
2010-05-07 20:08:59 +00:00
David Anderson ef0019d8c3 - validator: bug fixes: bad formula for low_average();
failure to reread app_versions because of 1e6/1e-6 typo


svn path=/trunk/boinc/; revision=21302
2010-04-26 23:12:40 +00:00
David Anderson c4df1f3104 svn path=/trunk/boinc/; revision=21232 2010-04-21 20:11:41 +00:00
David Anderson 5035007b90 - back end: new way of deciding:
- whether host is "reliable" for an app version
    - whether host is eligible for single replication for an app version
    - whether to use host scaling
    In each case, the answer is yes if the number of
    consecutive valid results is above a threshold.
    This replaces existing "error rate" and "scale probation" mechanisms.

    TODO: the # of consecutive valid results should also determine
        a limit on jobs in progress for an app version.
        Namely, if N is the threshold for host scaling, the limit should be
            ndevices*(max(1, consecutive_valid - N))
        The client currently doesn't supply enough
        app version info to do this.
        It could be approximated; that would give some protection
        against cherry-picking.
- credit: more conservative formulas for combining claimed credit
    among replicas.
    If there are normal replicas, we use a "low average"
    that weights each sample by the sum of the other samples.
    Otherwise we use the min (not the average) of the approximate samples.

NOTE: a DB update is required


svn path=/trunk/boinc/; revision=21230
2010-04-21 19:33:20 +00:00
David Anderson 61195cb59d - validator: fix bug where host.total_credit not incremented
svn path=/trunk/boinc/; revision=21211
2010-04-19 21:46:45 +00:00
David Anderson 021edb02c2 - back end programs: improve log msgs
svn path=/trunk/boinc/; revision=21193
2010-04-16 18:07:08 +00:00
David Anderson 02717af2f3 - bug fixes
svn path=/trunk/boinc/; revision=21187
2010-04-15 21:58:44 +00:00
David Anderson b2451544e1 - server: change the following from per-host to per-(host, app version):
- daily quota mechanism
    - reliable mechanism (accelerated retries)
    - "trusted" mechanism (adaptive replication)
- scheduler: enforce host scale probation only for apps with
    host_scale_check set.
- validator: do scale probation on invalid results
    (need this in addition to error and timeout cases)
- feeder: update app version scales every 10 min, not 10 sec
- back-end apps: support --foo as well as -foo for options

Notes:
- If you have, say, cuda, cuda23 and cuda_fermi plan classes,
    a host will have separate quotas for each one.
    That means it could error out on 100 jobs for cuda_fermi,
    and when its quota goes to zero,
    error out on 100 jobs for cuda23, etc.
    This is intentional; there may be cases where one version
    works but not the others.
- host.error_rate and host.max_results_day are deprecated

TODO:
    - the values in the app table for limits on jobs in progress etc.
        should override rather than config.xml.

Implementation notes:
scheduler:
    process_request():
        read all host_app_versions for host at start;
        Compute "reliable" and "trusted" for each one.
        write modified records at end
    get_app_version():
        add "reliable_only" arg; if set, use only reliable versions
        skip over-quota versions
    Multi-pass scheduling: if have at least one reliable version,
        do a pass for jobs that need reliable,
        and use only reliable versions.
        Then clear best_app_versions cache.
    Score-based scheduling: for need-reliable jobs,
        it will pick the fastest version,
        then give a score bonus if that version happens to be reliable.
    When get back a successful result from client:
        increase daily quota
    When get back an error result from client:
        impose scale probation
        decrease daily quota if not aborted
Validator:
    when handling a WU, create a vector of HOST_APP_VERSION
        parallel to vector of RESULT.
        Pass it to assign_credit_set().
        Make copies of originals so we can update only modified ones
    update HOST_APP_VERSION error rates
Transitioner:
    decrease quota on timeout


svn path=/trunk/boinc/; revision=21181
2010-04-15 03:13:56 +00:00
David Anderson e276aa5ed6 - server: make the -d 4 feature work with FCGI
svn path=/trunk/boinc/; revision=21109
2010-04-05 23:12:02 +00:00
David Anderson 2536797068 - validator: remove update_credit_per_cpu_sec(). Irrelevant.
TODO: remove related code
- validator: update wu.canonical_credit correctly.
    However, this field should be deprecated.
- validator: check for error return from assign_credit_set().

svn path=/trunk/boinc/; revision=21096
2010-04-05 20:03:54 +00:00
David Anderson a5c2f98481 - backend: make "print queries" a runtime instead of compile-time
decision (bool g_print_queries)


svn path=/trunk/boinc/; revision=21065
2010-04-03 00:02:38 +00:00
David Anderson 19f7d66b53 - backend programs: change the way PFC and elapsed-time statistics
are written to the DB.
    The incremental approach was bogus.
    New approach:
    host_app_version: write directly; R/W interval is tiny
    app_version: maintain an explicit list of update samples
        for both PFC and credit.
        When the validator flushes its app_version cache,
        do careful updates.
    Note: when using double fields in careful updates,
    you can't test for equality.  Use abs(new-old) < 1e-N

svn path=/trunk/boinc/; revision=21057
2010-04-02 19:10:37 +00:00
David Anderson 2335e009bb svn path=/trunk/boinc/; revision=21022 2010-03-29 22:29:21 +00:00
David Anderson fb851311e0 - server: various changes;
see http://boinc.berkeley.edu/trac/wiki/CreditNew

    Projects will need to update DB and recompile all back-end programs.

    Summary:
    - new way of computing credit
    - "reliable host" mechanism is per app version
    - "host punishment" mechanism is per app version
    - adjustment of wu.rsc_fpops_est provides the
        equivalent of per app version DCF
    - max jobs in progress is now per app
    - max jobs per RPC is now per app

    TODO:
    - reliable mechanism:
        - populate and use host_app_version.error_rate
        - populate host_app_version.turnaround
    - host punishment:
        - populate host_app_version.max_jobs_per_day
        - populate host_app_version.n_jobs_today
        - use app.max_jobs_per_day_init
    - job limits:
        - use app.max_jobs_in_progress, max_gpu_jobs_in_progress
        - use app.max_jobs_per_rpc
    - adjust wu.rsc_fpops_est
    - remove old credit stuff
        fpops_cumulative, credit_multiplier
        credit computation in scheduler

- AVERAGE class: use the Knuth algorithm (Wikipedia)


svn path=/trunk/boinc/; revision=21021
2010-03-29 22:28:20 +00:00
David Anderson 836b935234 - fix bugs in strcasestr(), which apparently had never been tested
- fix typo in schema

svn path=/trunk/boinc/; revision=20923
2010-03-16 17:20:14 +00:00
David Anderson 3452bbbc87 - GUI RPC: more replacement of std::string
svn path=/trunk/boinc/; revision=20889
2010-03-13 04:40:37 +00:00
David Anderson 85d0027d3b - server: DB update queries check that the number of affected rows is 1.
However, MySQL's default is that "affected rows" is
    rows actually modified, which is not what we want.
    Use the CLIENT_FOUND_ROWS option in mysql_real_connect()
    to change the semantics to "rows matched".
    From Oliver Bock.

svn path=/trunk/boinc/; revision=20880
2010-03-12 19:36:20 +00:00
David Anderson 4f77556c74 - client: if a GPU job is blocked on available mem,
don't fetch more jobs for that resource type

svn path=/trunk/boinc/; revision=20817
2010-03-10 06:00:37 +00:00
David Anderson 0ad0886df3 - server credit stuff.
New policy: anon platform and old platform jobs
    get average credit, possibly scaled by elapsed time.
    We no longer attempt to guess what app version produced them.

svn path=/trunk/boinc/; revision=20816
2010-03-10 00:33:31 +00:00
David Anderson 8062f21d59 - server credit stuff (partial checkin)
svn path=/trunk/boinc/; revision=20810
2010-03-09 04:15:10 +00:00
David Anderson 295d4b54ea - server: major improvements to locality scheduling from Einstein@home.
Triggering the work generator is now done via the DB
    instead of flat files.

    Since only E@h uses locality scheduling,
    I kept the DB changes in a separate file (db/schema_locality.sql).
    There's a new field in the workunit table,
    and that's a required update (in db_update.php)
- manager: compile fix


svn path=/trunk/boinc/; revision=20807
2010-03-05 22:55:16 +00:00
David Anderson 9020d0b715 - server: if MySQL version is 5.0.19 <= v < 5.1,
set the reconnect option before real_connect() instead of after.
    From Oliver Bock.

svn path=/trunk/boinc/; revision=20763
2010-03-01 19:12:19 +00:00
David Anderson 09b0a9f93c - admin web: reorganize main page;
add "transition all" command

svn path=/trunk/boinc/; revision=20745
2010-02-26 21:34:20 +00:00
David Anderson 65b581b28d svn path=/trunk/boinc/; revision=20316 2010-01-29 16:28:46 +00:00
David Anderson 5661321de3 - feeder: fix crashing bug
svn path=/trunk/boinc/; revision=19509
2009-11-06 23:31:42 +00:00
David Anderson 53aa10570a - feeder: fix crashing bug
svn path=/branches/server_stable/; revision=19508
2009-11-06 23:31:26 +00:00
David Anderson 8caa2cf3d5 - test code for new credit system
svn path=/trunk/boinc/; revision=19462
2009-11-04 21:23:56 +00:00
David Anderson c76d166344 - user web: forum_preferences.{low_rating_threshold, high_rating_threshold}
were deprecated, but were still used in deciding whether to show a post.
    This broke the "ignore list" function.

svn path=/trunk/boinc/; revision=19218
2009-09-29 21:58:54 +00:00
David Anderson 381a15c724 - create_work function and script:
check for valid ordering among max_success_results,
    max_total_results, max_error_results, and target_nresults

svn path=/trunk/boinc/; revision=19054
2009-09-16 03:10:22 +00:00
David Anderson da7e82fe15 - scheduler and back end: add new fields to result table:
elapsed_time: the elapsed time (runtime) as reported by client
    flops_estimate: the app's estimated FLOPS as reported by app_plan()
    app_version_id: the DB ID of the app_version used
        (or -1 if anonymous platform)
    TODO: show these in the web interfaces,
    and use them where appropriate

svn path=/trunk/boinc/; revision=19002
2009-09-03 20:26:31 +00:00
David Anderson 8b701fc73f - scheduler: fix messed-up deadline check logic.
Old:
        1) check deadline based on wu.delay_bound
        2) in add_result_to_reply(), potentially modify wu.delay_bound,
            e.g. because of retry acceleration
        problem: reducing delay bound may cause deadline miss
    New:
        1) new function get_delay_bound_range()
            (called from wu_is_infeasible_fast())
            returns optimistic and pessimistic delay bounds.
            Retry acceleration logic is here.
        2) check deadline based on optimistic bound;
            if that fails, check based on pessimistic bound.
            Set wu.delay_bound to the one that worked.
    Notes:
    - get_delay_bound_range() needs result priority and report deadline,
        and it's called before we read the full result.
        So add these items to WORK_ITEM and WU_RESULT.
    - get_delay_bound_range() could be customized for
        project-specific deadline policy.
    - add_result_to_reply() was becoming a toxic waste dump.
        Deadline-related stuff should have been factored out in any case.

svn path=/trunk/boinc/; revision=18946
2009-08-31 19:35:46 +00:00
David Anderson 12d4b978be - scheduler: if client request uses a weak authenticator,
don't modify user preferences or CPID.
- client: fix bug that shows ATI version incorrectly
- database: host.posts has been repurposed as a salt (or seqno)
    for a new type of weak authenticator that won't depend on password
- web code:
    modify forum_preferences.posts instead of host.posts.
    (actually, the former isn't used either, we just do a select count(*);
    should fix this at some point).

svn path=/trunk/boinc/; revision=18865
2009-08-18 20:44:12 +00:00
David Anderson 8dc464f1e4 - fix typo in schema
svn path=/trunk/boinc/; revision=18506
2009-06-27 21:10:40 +00:00
Jeff Cobb 15ccf7b778 Added table state_counts.
svn path=/trunk/boinc/; revision=18490
2009-06-23 21:45:22 +00:00
David Anderson 10f9e11ee6 - lib: created a new file for declaring "replacements"
for functions like strlcpy() etc.
    config.h is included here rather than in str_util.h


svn path=/trunk/boinc/; revision=18437
2009-06-16 20:54:44 +00:00
David Anderson c86419a9ff - DB: for tables w/ fulltext indices, specify engine as MyISAM
from Nicolas; fixes #904

svn path=/trunk/boinc/; revision=18201
2009-05-26 16:56:00 +00:00
David Anderson 323fdc0e21 - DB code: fixed three places where we accessed a MYSQL_ROW
after freeing the MYSQL_RES it came from.
    (this didn't appear to cause any problems, but not good form).
    Fixes #883

svn path=/trunk/boinc/; revision=17904
2009-04-28 19:20:23 +00:00
David Anderson 04cdfe9cab - scheduler and web: add a project preference for whether to use the CPU.
This complements the "use GPU?" pref.
    Neither should be necessary, but what the heck.

svn path=/trunk/boinc/; revision=17628
2009-03-18 21:14:44 +00:00
Eric J. Korpela 5fe6e9a098 Added include of Makefile.incl and "if INSTALL_HEADERS" around
pkginclude_HEADERS=


svn path=/trunk/boinc/; revision=17563
2009-03-09 15:38:21 +00:00
David Anderson 65679139c5 - scheduler: make host.p_features available to app_plan()
svn path=/trunk/boinc/; revision=17307
2009-02-19 15:43:37 +00:00
David Anderson 85a8e6a772 - scheduler: remove the config flag <have_cuda_apps>,
and add <cuda_multiplier>.
    The latter is used in calculating max jobs/day for a host;
    namely, it's host.max_results_day * (NCPUS + NCUDA*cuda_multiplier).
    Set it to 10 or so if you have CUDA apps.
- scheduler: don't overload effective_ncpus();
    instead, add two new functions,
    max_results_day_multiplier() and max_wus_in_progress_multiplier()
- scheduler: don't reduce max_results_day if we get an aborted job
    (it might have been aborted by the project;
    not appopriate to punish host in this case)

svn path=/trunk/boinc/; revision=16959
2009-01-20 00:54:16 +00:00
David Anderson 4a65681176 - scheduler: if client has coprocs,
put a textual summary of them in host.serialnum (currently unused)
- web: show coprocs on host detail page
- db_dump: include coproc info in host XML

svn path=/trunk/boinc/; revision=16697
2008-12-16 18:46:28 +00:00
Jeff Cobb 8b18ab4a16 Added result userid and teamid to the column set in DB_VALIDATOR_ITEM_SET.
This is needed by application validator code for cuda logging.

svn path=/trunk/boinc/; revision=16673
2008-12-12 17:54:01 +00:00
David Anderson 79fb6e969e - Remove the notion of "CPU efficiency" from both client and server.
This wasn't being measured correctly for coproc/multithread apps,
    and its effect is now subsumed in DCF.

svn path=/trunk/boinc/; revision=16610
2008-12-03 19:50:06 +00:00
David Anderson b5cece0928 - back-end programs: set MySQL option to reconnect to server
if the connection goes away
    (which it apparently does if idle for a while)

svn path=/trunk/boinc/; revision=16532
2008-11-19 00:16:07 +00:00
David Anderson 562d7ac2d7 Bolt stuff
svn path=/trunk/boinc/; revision=16370
2008-10-30 22:58:33 +00:00
David Anderson 19dfe0ee71 - Add callback mechanism for exercises and exercise sets
- Default count for exercise sets is N, not 1

svn path=/trunk/boinc/; revision=16305
2008-10-23 20:35:39 +00:00
David Anderson 3f67133c9b - forgot to add team.joinable to schema.sql
svn path=/trunk/boinc/; revision=16229
2008-10-17 18:08:26 +00:00
David Anderson 33ad1b3d40 - Added the above DB change to schema.sql
- Omit the "after" clause from update.
- Web: add missing arg; fixes #749
- server: more --help additions

svn path=/trunk/boinc/; revision=16136
2008-10-06 00:18:36 +00:00
David Anderson 59184caaa9 - scheduler: FCGI: use mysql_ping() to check that DB connection
is still alive before handling a request.  If not, try to reconnect.
    This will hopefully make things work better if MySQL goes down and up
    when using FCGI.

svn path=/trunk/boinc/; revision=16112
2008-10-02 19:03:52 +00:00
David Anderson 98cfb8d3b0 - rename .C files to .cpp so that Doxygen will work
svn path=/trunk/boinc/; revision=16069
2008-09-26 18:20:24 +00:00
David Anderson f17a800807 - API: in boinc_exit(), release the lockfile only if
we're the main program (otherwise we didn't lock it in
    the first place, and a crash results).  From Artyom Sharov.
- scheduler: add support for the GCL simulator,
    which uses special versions of backend programs
    that use virtual time,
    and that wait for signals instead of sleep()ing.

    To compile:
        make clean
        configure CXXFLAGS="-DGCL_SIMULATOR"
        make

svn path=/trunk/boinc/; revision=16038
2008-09-22 20:33:59 +00:00
David Anderson cc7d507789 - DB interface: in update(), check that 1 row was updated
- API: in APP_INIT_DATA, enclose project preferences in tags
    so that it's legal XML
- scheduler: add <multiple_clients_per_host> option.
    Use this if your project runs on Condor or grids
    and (to use multicore machines) you're running
    multiple clients per host.
    This will skip the host lookup based on IP address.


svn path=/trunk/boinc/; revision=15954
2008-09-04 08:33:21 +00:00
David Anderson a5f80bc2e6 - lib: fix typo
svn path=/trunk/boinc/; revision=15903
2008-08-20 16:49:37 +00:00
David Anderson 0e14fa8f9e - Finished implemenation of refresh intervals;
added "count" field to DB table to keep track of how many times
    we've refreshed.
- show refresh schedule on main courses page
- default for random structure is all units, not 1

svn path=/trunk/boinc/; revision=15846
2008-08-14 21:05:02 +00:00
David Anderson c69186ef74 - remove "doc_file" field; use short_name.inc
- fix tabl_exists()
- fix bugs when return to answer page
- create bolt_result records correctly

svn path=/trunk/boinc/; revision=15836
2008-08-14 15:46:30 +00:00
David Anderson b5b3fd43b7 - scheduler: make credit_multiplier stuff conditional on
<use_credit_multiplier> flag in config.xml

svn path=/trunk/boinc/; revision=15766
2008-08-06 23:30:22 +00:00
David Anderson 4f66bb4c95 - added copyright and license info to .C, .cpp, .h files
- 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
2008-08-06 18:36:30 +00:00
David Anderson 80bde8a4c6 - ops: add script to fix backslashes in posts etc.
- DB: add db_update.php entry for Eric's new table

svn path=/trunk/boinc/; revision=15700
2008-07-28 22:24:57 +00:00
Eric J. Korpela 8da770569f Typo fix
svn path=/trunk/boinc/; revision=15671
2008-07-25 01:42:23 +00:00
Eric J. Korpela a5a6f693cd - Implementation of automatic credit leveling for cpu based projects that
wish to use it.
- The script calculate_credit_multiplier (expected to be run daily as
      a config.xml task) looks at the ratio of granted credit to CPU time 
      for recent results for each app.  Multiplier is calculated to cause 
      median hosts granted credit per cpu second to equal to equal that 
      expected from its benchmarks.  This is 30-day exponentially averaged 
      with the previous value of the multplier and stored in the table 
      credit_multplier.
- When a result is received the server adjusts claimed credit by the
      value the multiplier had when the result was sent.


svn path=/trunk/boinc/; revision=15661
2008-07-22 23:36:55 +00:00
David Anderson 27dee4e450 - manager: fix typo
svn path=/trunk/boinc/; revision=15640
2008-07-20 21:27:44 +00:00
David Anderson e70273774a - scheduler: in matchmaker scheduler, if find a "locked" array slot,
which whether we're the process that locked it (from Artyom Sharov)

svn path=/trunk/boinc/; revision=15635
2008-07-18 20:59:59 +00:00
David Anderson fa0dbd20c7 - scheduler: with matchmaker scheduling, avoid infinite loop
if result not in DB
    (from Artyom Sharov, DerMeister)

svn path=/trunk/boinc/; revision=15608
2008-07-15 22:44:36 +00:00
David Anderson 8c41a07992 - scheduler: Add a notion of "hard app" for SETI@home.
If an app is hard, the scheduler always does the deadline check,
    even if the client has no other jobs for this project.
    And the estimated wallclock duration is multiplied by 1.3,
    to avoid sending jobs to hosts that will barely make the deadline.

    Hard apps are marked by setting weight = -1.
    This is a total kludge, to avoid adding another field to app.

svn path=/trunk/boinc/; revision=15607
2008-07-15 21:43:45 +00:00
David Anderson 1147e60b1a - web: fix bugs that cause backslashes to be introduced
in global prefs update via account manager RPC

svn path=/trunk/boinc/; revision=15602
2008-07-14 19:13:19 +00:00
David Anderson 08f126f53b svn path=/trunk/boinc/; revision=15600 2008-07-13 04:26:23 +00:00
David Anderson 1bd7742c4a - more gcc fixes
svn path=/trunk/boinc/; revision=15496
2008-06-26 20:53:51 +00:00
David Anderson 4210ccff4c - diagnostics library: in signal handler, use _exit() instead of exit();
an atexit() function might have been what caused the signal

svn path=/trunk/boinc/; revision=15437
2008-06-19 20:56:36 +00:00
David Anderson b16fb12329 - manager: fix some strings ("comm" is not an OK abbrev.)
Also got rid of references to Yahoo.

svn path=/trunk/boinc/; revision=15406
2008-06-14 20:38:57 +00:00
David Anderson 4387e4491b - Fix emacs mode line in Makefile.am's
svn path=/trunk/boinc/; revision=15375
2008-06-08 22:18:52 +00:00
David Anderson 3054a5f6b3 - validator/assimilator: fix bug in 2 June checkin
(xml_doc_in wasn't included in DB query)

svn path=/trunk/boinc/; revision=15363
2008-06-05 18:36:31 +00:00
David Anderson 0e03df254b - Back end: add adaptive validation feature
(DB update required)
- Fixed typo in Eric's 5/28 checkin

svn path=/trunk/boinc/; revision=15357
2008-06-04 23:04:12 +00:00
David Anderson 5bb78f7a1c fix typo in schema.sql
svn path=/trunk/boinc/; revision=15356
2008-06-04 22:43:13 +00:00
David Anderson c9d38091e7 - validator/assimilator: parse <file_ref>s rather than <file_info>s;
the latter is where the <optional/> flag is.

svn path=/trunk/boinc/; revision=15337
2008-05-30 03:29:31 +00:00
Eric J. Korpela 70baf36e93 - Added database table credit_multiplier and script to be run daily
(calculate_credit_multiplier) to determine what factor to multiply
   claimed credit by before insertion into the database.  Changes to scheduler
   to implement have not yet been checked in.


svn path=/trunk/boinc/; revision=15309
2008-05-28 17:28:19 +00:00
Eric J. Korpela 1f2d65bccb - Makefiles:
added client/scripts to default client build
    removed sea from the default clientgui build
    added locale/client to the default clientgui build
    moved installed headers from $(includedir) to $(pkgincludedir) which
       is $(includedir)/boinc by default.
    removed redefinitions of $(includedir) from Makefiles.
- configure:
    added locale/client/Makefile to AC_CONFIG_FILES


svn path=/trunk/boinc/; revision=15300
2008-05-28 01:38:39 +00:00
David Anderson 6af9f66b4e - DB/feeder/scheduler: change app_version.xml_doc from blob to mediumblob,
and change the correspending structure field from 64KB to 256KB
    (could increase this if needed).
    This is needed to handle app versions with lots (> 100) of files
- change LARGE_BLOB_SIZE to BLOB_SIZE a bunch of places
- Change COPROCS from vector<COPROC> to vector<COPROC*>.
    Otherwise the right virtual functions of COPROCs don't get called

svn path=/trunk/boinc/; revision=14986
2008-03-31 16:19:45 +00:00
David Anderson 4554fa5ce3 - server and client:
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
2008-03-28 18:00:27 +00:00
David Anderson c9b563f066 - DB: workunit.rsc_bandwidth needed to go after mod_time
svn path=/trunk/boinc/; revision=14970
2008-03-27 20:46:31 +00:00
David Anderson 13400c9516 Changes for multithread app support:
- 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
2008-03-27 18:25:29 +00:00
David Anderson 4e9fbac5e0 - admin web: touch reread_db in manage_app_versions.php
- DB code: remove "is_high_priority" stuff.
- scheduler: merge find_app_version() into get_app_version().
    Have the latter memoize its results (both positive and negative).
    Have it call app_plan() for apps with nonempty plan_class.
- scheduler: first steps towards improved selectability of log messages.
    It will eventually be like the client,
    where you can select among various types of messages.
- feeder: if can't unlink the reread_db trigger file, exit
    (else we'd go into an infinite loop)

svn path=/trunk/boinc/; revision=14940
2008-03-18 21:22:44 +00:00
David Anderson 815b8fc043 Various preparation for handling multithreaded apps
and apps that use coprocessors.
There now can be several app_versions for the same
(app, platform, version_num) combination.
This changes a number of things.

- Added app_version.plan_class field to DB
- update_versions now looks for a :plan-class in the
    file or directory name, and puts it in the app_version's DB record
- Change uniqueness constraint to include plan_class
- Feeder: the feeder was putting non-deprecated app_versions
    in shared mem, and leaving it to the scheduler to
    find the latest version for a given platform.
    This is dumb.
    Instead, for each app/platform pair the feeder now
    finds the highest version number of a non-deprecated app version,
    and enumerates all non-deprecated app_versions with that
    app/platform/version
- Scheduler: add a BEST_APP_VERSION data structure that keeps track,
    for each app, what the best app_version is for this host.
    This saves the work of recomputing it for each job.

svn path=/trunk/boinc/; revision=14906
2008-03-13 22:57:24 +00:00
David Anderson 546c0b899a - server: fix botched checkin from 7 March.
The new field (workunit.rsc_bandwidth_bound)
    goes at the END of the record.
    Always do it this way!
- make_work: after creating a batch of new WUs,
    we were waiting 60 sec for the transitioner to
    create the results for them
    (so that our next count of unsent results would be correct).
    This is bogus; if e.g. the transitioner isn't running,
    we'll never get the results, and we'll keep creating WUs forever.

    Instead: explicitly wait for there to be results for
    the last WU from the batch just created.

- scheduler: parse <allow_non_preferred_apps>, <allow_beta_work> correctly.

svn path=/trunk/boinc/; revision=14875
2008-03-10 17:03:15 +00:00
David Anderson 95772cba77 - removed boinc_ncpus_available() and boinc_nthreads() calls.
The design has been changed to constant #threads per app version
    Various changes from Kevin Reed/WCG:
    - server: add workunit.rsc_bandwidth_bound: if nonzero,
        send this WU only to hosts with that much download bandwidth
    - assimilators: if a handler returns DEFER_ASSIMILATION,
        the WU remains in INIT state and will be handled when the
        next instance completes.
        Useful if you want the assimilator to see all instances.
    - scheduler: when setting result.outcome = DETACHED,
        set received_time to now
    - scheduler: removed the reliable_time and reliable_min_avg_credit
        options
    - scheduler/web: add optional <allow_non_preferred_projects>
        in project preferences.
        If present, user will accept work from non-selected apps
        if no work is available for selected apps
    - scheduler: improved messages for projects with multiple apps
    - scheduler: added config options
        <granted_credit_weight> and <granted_credit_ramp_up>.
        Used in calculating host.claimed_credit_per_cpu_sec,
        but I'm not sure how.
    - Added two new credit-granting formulas (validate_util.C):
        stddev_credit() and two_credit()
    - server DB: add rollback_transaction() and affected_rows() to DB_CONN

    NOTE: DB update required

svn path=/trunk/boinc/; revision=14870
2008-03-07 21:13:01 +00:00
David Anderson 1106da6ec6 - transitioner: we're not supposed to ever see "assigned" WUs.
But if we do, set their transitioner time to plus infinity
    so that we don't see them again.
    (otherwise we go into an infinite loop)
- DB code: remove "high_priority" from queries not from scheduler
    (should probably remove them from there too)
- file_deleter: print error msg if apache user doesn't exist

svn path=/trunk/boinc/; revision=14835
2008-03-03 19:33:32 +00:00
David Anderson 54519a4ee1 - Server: add "job assignment" feature.
Lets you assign a WU to a particular host,
    to one or all hosts belonging to a user or team, or to all hosts.
    See http://boinc.berkeley.edu/trac/wiki/AssignedWork
    Disabled unless you include <enable_assignment> in config.xml
    Uses a new DB table.
    Tested but only a little.
- Server: code cleanup; moved result-handling to a new file,
    and removed the PLATFORM_LIST arg to everything
    (put it in SCHEDULER_REQUEST instead)

svn path=/trunk/boinc/; revision=14767
2008-02-21 00:47:50 +00:00
David Anderson 02adbc4d49 - web: remove all references to the PHP "session" mechanism,
which added only confusion.
    Implement login directly, using cookies.
- All cookie setting/clearing now goes through two functions,
    send_cookie() and clear_cookie().
    These deal with path and expiry
    (e.g. if you want to have different language or forum settings
    on two projects on the same server, that now works).

svn path=/trunk/boinc/; revision=14735
2008-02-13 19:02:44 +00:00
David Anderson 35dab13859 - client code: my next-to-last checkin was flawed
svn path=/trunk/boinc/; revision=14725
2008-02-12 20:33:05 +00:00
David Anderson 51286a03dc - Initial checkin of Bossa code
svn path=/trunk/boinc/; revision=14716
2008-02-11 23:38:31 +00:00
David Anderson f77420c2c0 - scheduler: do "careful update" of workunit.hr_class
in case someone else changed since we read it.
    Hopefully this will fix a race condition
    where WU results get sent to different HR classes.
    (Alternatively we could use transactions,
    or acquire the semaphore during read/update,
    but this could impact performance).

svn path=/trunk/boinc/; revision=14710
2008-02-08 17:20:09 +00:00
David Anderson e56ed1430f - DB code: safe_atof() was returning a float,
causing a potential loss of precision.
    Change it to double (same as atof())
- When moderator locks a thread, let them specify reason

svn path=/trunk/boinc/; revision=14662
2008-02-02 17:01:57 +00:00
David Anderson 904cbe5a4f - Add Bolt admin page
- added "hidden" flag to courses


svn path=/trunk/boinc/; revision=14660
2008-02-01 23:11:09 +00:00
David Anderson d2a0353a00 - manager: fix unix build (new file)
svn path=/trunk/boinc/; revision=14658
2008-01-31 23:43:37 +00:00
David Anderson 4cfba489df - implement the review mechanism
svn path=/trunk/boinc/; revision=14653
2008-01-30 19:29:51 +00:00
David Anderson f682236bd9 - API: fix Win build error
- API: fix Makefile.am
- add LGPL license on some files

svn path=/trunk/boinc/; revision=14629
2008-01-28 22:42:05 +00:00
David Anderson ebed572d4f - API: allow Win apps to have icon
svn path=/trunk/boinc/; revision=14625
2008-01-28 15:48:09 +00:00
David Anderson 1e5b72068e - make old-style graphics (though not supported) still compile
svn path=/trunk/boinc/; revision=14588
2008-01-17 18:09:30 +00:00
David Anderson 757c41b1fa - web: add RSS feed for notifications
- make_project: disable community-related periodic tasks
    for newly-created projects

svn path=/trunk/boinc/; revision=14468
2008-01-04 22:59:21 +00:00
David Anderson 2d40b5722d - web: fix broken link for profile like/don't like.
TODO: currently these don't do anything useful.  Fix this.

svn path=/trunk/boinc/; revision=14461
2008-01-03 17:37:38 +00:00
David Anderson dddd1fc501 - fixed bug in upgrade
svn path=/trunk/boinc/; revision=14451
2008-01-01 18:07:13 +00:00
David Anderson f183b6f47f - web: add general-purpose notification mechanism.
Users can choose whether to get 1 email per notification,
    a daily "digest" email, or no email.
    (All notifications are shown on the Account page).
    Currently used for:
    - Friend requests and confirmations
    - Posts to subscribed threads
    - Private messages

    NOTE: To implement the "daily digest" feature, projects must add
    a periodic task for html/ops/notify.php to config.xml
- web: have project_footer() generate links for
    Account Page and Message Boards as well as Home
    NOTE: projects that want this change
    will have to modify their own project.inc.

svn path=/trunk/boinc/; revision=14447
2007-12-30 22:02:16 +00:00
David Anderson 55c0ee22a0 - web: default for user_links() is to not show profile pic.
Show the pic only in the context of friends list.

svn path=/trunk/boinc/; revision=14444
2007-12-27 18:37:22 +00:00
David Anderson 11dac5e80c - make_project: add --web_only option.
This lets you create a project for Bossa or Bolt
    without compiling the C++ stuff, which is not used by Bossa or Bolt.
- DB schema: change type= to engine= to avoid MySQL warning messages

svn path=/trunk/boinc/; revision=14437
2007-12-21 23:39:25 +00:00
David Anderson 1069770a7f - compile fixes for gcc 4.3 (from Frank Thomas)
Fixes #514

svn path=/trunk/boinc/; revision=14436
2007-12-21 21:09:40 +00:00
David Anderson c3491a40d9 David Dec 19 2007
- May as well start keeping checkin notes for Bolt.
        At this point the fundamental structure of Bolt is
        more or less complete, I hope; many features are missing.

    Items for this particular checkin:

    - Make things work right when you resume a course at an
        exercise answer page.
        This creates a new View, whose prev_view_id link points
        to the exercise view, not the answer page view
    - When leave a page using "Up", terminate the view accordingly.
    - Rather than using $_GET, Form vars are now passed to exercise primitives
        in a global variable $bolt_ex_query_string, which they must parse.

svn path=/trunk/boinc/; revision=14414
2007-12-19 16:31:41 +00:00
David Anderson 2f3d70a228 Bolt: added mechanism to view old answer pages
svn path=/trunk/boinc/; revision=14396
2007-12-18 23:37:26 +00:00
David Anderson 13baee4302 - user web: add "friend" and "notification" features
- user web: code cleanup in Profile area
- GUI RPC: add missing "/" in auth2 RPC

svn path=/trunk/boinc/; revision=14394
2007-12-18 20:28:08 +00:00
David Anderson 69042c3284 - bolt stuff
svn path=/trunk/boinc/; revision=14374
2007-12-12 04:43:04 +00:00
David Anderson 3f41f9a88d - Add weak account key mechanism.
Each account has an associated weak account key.
    The user can see it by visiting weak_auth.php.
    If you put the weak account key in the account file on a computer
    (instead of the regular account key)
    the computer will attach to the account.
    But the weak account key cannot be used to log in
    to the account on the web, or to do web RPCs, or anything else.

    Note: this involves a scheduler change.

svn path=/trunk/boinc/; revision=14367
2007-12-07 23:23:25 +00:00
David Anderson 68ec6e6ce6 svn path=/trunk/boinc/; revision=14319 2007-11-29 02:56:10 +00:00
David Anderson 4a81532043 - DB: add fulltext index on team.name
- user web: improve "team search" function,
    and get rid of the superceded "search by name" function
- user web: don't show team founder link to initiate transfer
- user web: show team types
- user web: fix "top teams by type" function
- client: tread NOT_FOUND error on file upload as transient;
    it means the project is missing its file_upload_handler

svn path=/trunk/boinc/; revision=14272
2007-11-20 22:58:14 +00:00
David Anderson dddc2ec6d2 - user web: clean up funky search result formatting.
For thread titles, show links to forum/category also
    For posts, show complete post, with search terms highlighted.
- user web: in display of posts for a user,
    show links to thread and forum also
- user web: posts/threads can become "orphaned" if their forum
    disappears, e.g. team message board is deleted.
    Handle this gracefully in search results and user post list
- user web: where HTML tags are allowed, say so
- user web: fix bug where wrap_postcounts weren't being shown in form
- DB: use "tinyint" instead of "tinyint(1) unsigned" etc.

svn path=/trunk/boinc/; revision=14267
2007-11-20 19:23:26 +00:00
David Anderson 615d4dcf22 - user web: the "private-message notification by email" flag
should default to off.
    Note: it's necessary to clear everyone's flag.
    Projects will need to notify users (e.g. via a news item)
    that they need to explicitly set this pref if they want email
    notification of PMs

svn path=/trunk/boinc/; revision=14255
2007-11-19 02:17:57 +00:00
David Anderson 9970e2c71b - user web: bug fixes
svn path=/trunk/boinc/; revision=14204
2007-11-14 21:55:05 +00:00
David Anderson aa7b9f2547 - DB: fix typo in schema
svn path=/trunk/boinc/; revision=14141
2007-11-12 16:00:37 +00:00
David Anderson bf227ea8b1 - DB: remove "lang" from schema - not used
- DB: added parent_type to forum
- user web: BoincUser uses caching by default
- client: fixed small memory leak in statistics parsing

svn path=/trunk/boinc/; revision=14130
2007-11-10 00:32:42 +00:00
David Anderson fb8b4ffabb - user web: added the notion of "Team Admin": team members,
appointed by the founder, who have most of the same
    rights as the founder (edit team info, view/remove users).
    They can't, however, change the founder, or select/remove Admins.
- user web: added the ability for founder to delete an empty team
- user web: count/show all team members, not just those with credit
- user web: Team Search returns top team if form fields left blank
- Added db_update.php entry for Eric's banishment_vote stuff

svn path=/trunk/boinc/; revision=14108
2007-11-07 17:23:29 +00:00
David Anderson 87c0f98b10 - user web: a private message is considered "read" the
first time it's shown.
        No explicit "mark as read" action needed.
        Also, no confirmation for message delete.

svn path=/trunk/boinc/; revision=14077
2007-11-03 04:26:47 +00:00
David Anderson 26138742c6 - Initial checkin for Bolt
svn path=/trunk/boinc/; revision=13998
2007-10-30 22:31:13 +00:00
David Anderson 7302f02544 - user web: added new framework for DB access from PHP.
Here's how things should eventually be:
    - inc/db_conn.inc defines DbConn, a PHP class representing
        a connection to a database with
        various generic operations (update, insert etc.).
        DbConn prepends the DB name to table names,
        so you don't have to select a DB;
        this means you can access multiple databases
        (e.g. BOINC and Bossa) and use persistent connections.
        ALL MYSQL-SPECIFIC CODE WILL EVENTUALLY BE HERE.
    - inc/boinc_db.inc defines classes BoincUser, BoincTeam etc.,
        representing the various BOINC DB tables.
        All access to the DB should use these classes.

    When you use this framework, no initialization calls are needed.
    db.inc is deprecated and should eventually be removed.

    I changed get_logged_in_user()
    and all team-related code to use this framework.
- user web: show team founder link to "management functions"
    even if they're not currently a member;
    allow team founder to perform all operations even if not a member.
- turned on E_ALL error checking,
    and fixed a bunch of warnings
    and a couple of bugs ($team, not team)

- database: update schema/constraints for team fulltext search
- user web: forgot to change Serbia and Montenegro to Serbia

svn path=/trunk/boinc/; revision=13968
2007-10-26 21:14:35 +00:00
David Anderson 618a5c1651 - assimilator: there was a bug in the situation where:
1) a WU is marked as ready for assimilation and has no errors;
    2) it has no canonical result
    In this case, the assimilate handler gets called anyway,
    typically with the canonical result of the previous WU as arg.
    Note: this situation doesn't arise normally;
    it might happen if some results are deleted accidentally.
    The fix: 
    - identify this situation, and set the WU.error_mask to a new code
        (WU_ERROR_NO_CANONICAL_RESULT)
    - zero out the "canonical_result" variable passed to the handler,
        so even if the handler fails to check wu.error_mask,
        at least it won't assimilate the same result twice.
    Thanks to Hendrik Verhoek for finding this bug.
- DB schema: team table type is MyISAM, not InnoDB

svn path=/trunk/boinc/; revision=13938
2007-10-23 17:11:56 +00:00
Eric J. Korpela 706b283b19 Added ability for forum moderators to vote for banishment of a poster
New db tables banishment_vote and banishment_votes
Daemon script vote_monitor for timing the votes
New configuration option <moderators_vote_to_ban/>



svn path=/trunk/boinc/; revision=13917
2007-10-19 20:01:36 +00:00
David Anderson 094eb0095e - Bossa:
JSON-encode stuff
    use text instead of varchar(255) a couple of places
    create Bossa class for utility functions

svn path=/trunk/boinc/; revision=13908
2007-10-18 21:43:25 +00:00
David Anderson b079d40cb9 - API, Unix: call getrusage() from the timer thread,
not the worker signal handler.
    There's no reason to call it from the signal handler -
    it returns the CPU for the entire process, not the calling thread.
    And it may be asynch-signal-handler-unsafe.
- API: comment out checks for bad CPU times.
    I don't think this is needed now, and in some cases it's wrong
    (multi-threaded apps can accumulate CPU faster than real time)
- API, Unix: in boinc_calling_thread_cpu_time(), don't retry getrusage().
- Bossa: switch to better class structure (suggested by Nicolas Alvarez).
    Haven't switched to mysqli yet, but will later.
    Also various other Bossa fixes

svn path=/trunk/boinc/; revision=13855
2007-10-16 23:02:13 +00:00
David Anderson 1c6277a3d2 svn path=/trunk/boinc/; revision=13852 2007-10-16 17:15:57 +00:00
Frank Thomas fbcfeaf456 - Removed the svn:executable property from files that should not be executable,
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
2007-10-10 09:25:40 +00:00
Rom Walton 38d4aecc0b Delete outdated .cvsignore files
svn path=/trunk/boinc/; revision=13814
2007-10-09 18:03:21 +00:00
Frank Thomas 3bfc78b511 Updated the postal address of the Free Software Foundation in all license headers. See http://lists.ssl.berkeley.edu/pipermail/boinc_dev/2007-October/008939.html for reference.
svn path=/trunk/boinc/; revision=13804
2007-10-09 11:35:47 +00:00
David Anderson bb5f54d31f - feeder/scheduler: fix bug where APP.homogeneous_redundancy
is defined as a bool instead of int
    (see its only nonzero value is 1, so the "coarse" HR type is ignored).

svn path=/trunk/boinc/; revision=13786
2007-10-05 22:32:47 +00:00
Rytis Slatkevičius 4b8aeabf91 User web: fix an annoyance when team founder transfer is requested and the requester leaves the team.
NOTE: DB UPDATE REQUIRED.

svn path=/trunk/boinc/; revision=13673
2007-09-26 15:46:54 +00:00
David Anderson bc5b979afb - Added new script "update_versions_v6"; use this instead of
update_versions to add version 6 apps.
    It looks for API_VERSION string in main executable,
    adds the API version to the app_version XML,
    and sets min_core_version to 6 for version 6+ apps
- API: include API_VERSION string
- convert tabs to spaces here and there
- scheduler: parse unused elements in <net_stats>
- ops/show_log.php: if no URL args, just show form (fixes #415)
- client: parse and store api_version (not used yet)

svn path=/trunk/boinc/; revision=13627
2007-09-21 18:10:54 +00:00
David Anderson db08d30fee - scheduler: update host.n_bwdown
(this was omitted for some reason).
    From Kevin Reed.


svn path=/trunk/boinc/; revision=13431
2007-08-21 20:41:29 +00:00
David Anderson 14bc500cab - user web: added mechanism for recording team membership changes.
These are stored in a new DB table, "team_delta".
    The team founder can view the history in HTML or XML
    (links on Management Functions page)

svn path=/trunk/boinc/; revision=13231
2007-07-27 18:30:10 +00:00
David Anderson 2af893b0f2 - user web: code cleanup related to team creation.
Make a single function that creates teams
    and cleanses arguments.
- API: don't include config.h in parse.h.
    This file is included from apps
    (indirectly, via graphics_api.h)
    so it shouldn't assume that config.h exists

svn path=/trunk/boinc/; revision=13212
2007-07-25 03:17:31 +00:00
David Anderson ef247eed41 - user web: moved functions to send specific messages out of email.inc
- user web: code cleanup involving team founder transfer,
    and improved the text of some messages

svn path=/trunk/boinc/; revision=13210
2007-07-23 20:30:30 +00:00
David Anderson 3e340136da - feeder: simplified DB query
- make_project: remove space after URL in schedulers.txt

svn path=/trunk/boinc/; revision=13127
2007-07-09 20:09:49 +00:00
David Anderson 797c464b3a - Back end: add a feature for "blackballing" hosts.
To do this, set host.max_results_day to -1.
    If you do this, scheduler requests from that host
    will get an error message, and will otherwise be ignored
    (no jobs in or out, no trickles).
- Scheduler: send_message() should be called ONLY if you're
    not going to call handle_request();
    otherwise we'll write two separate replies.
    To fix this, I added a separate function (send_error_message())
    that can be called within handle_request()
    to deal with error situations.
- Scheduler: moved debug_sched() to main.C
- Scheduler: moved logic to send "delete file" commands
    out of handle_request() into a separate function,
    send_file_deletes() in sched_locality.C.
    Remove #ifdef EINSTEIN_AT_HOMEs; maybe someday another project
    will use locality scheduling!

svn path=/trunk/boinc/; revision=13108
2007-07-06 16:37:00 +00:00
David Anderson a97556bdfd - feeder: added a new enumerator of DB_WORK_ITEM that,
on successive calls, scans through ALL the sendable
    jobs satisfying the select clause
    (it does this by ID order, so there's no order clause)
    This is used for HR, so that if a job has been committed
    to an HR class, we eventually get it.

    With extremely minimal testing, the new HR stuff seems to work.

db/
    boinc_db.C,h
sched/
    feeder.C
    sample_work_generator.C
    server_types.C

svn path=/trunk/boinc/; revision=12988
2007-06-22 23:48:37 +00:00
David Anderson f5d94818dd - added "census", a program that counts up how much RAC
there is for each HR class, and writes it to a file.
    This will be used soon for HR support in the feeder.
- split the HR code into hr.C,h (stuff used by both census and scheduler)
    and sched_hr.C (stuff used only by the scheduler)
- database: change DB_CREDITED_JOB to treat workunitid
    as a double (which it is) rather than a long.
    BTW, long == int.
- fixed lots of compile warnings in the server code

db/
    boinc_db.C,h
lib/
    boinc_cmd.C
    miofile.C
    util.C
sched/
    Makefile.am
    census.C (new)
    feeder.C
    file_deleter.C
    file_upload_handler.C
    handle_request.C
    hr.C,h (new)
    main.C
    sample_assimilator.C
    sample_work_generator.C
    sched_array.C
    sched_hr.C,h
    sched_send.C
    server_types.C
    transitioner.C
    validator.C

svn path=/trunk/boinc/; revision=12970
2007-06-20 22:34:06 +00:00
Rytis Slatkevičius bcf948a03d user web: add a separate preference for private message notification emails.
'''NOTE: needs DB update, see html/ops/db_update.php'''

(Fix #167)

svn path=/trunk/boinc/; revision=12813
2007-06-04 19:35:11 +00:00
David Anderson d673440faf - Scheduler: increased the resolution of homogeneous redundancy (HR)
e.g. distinguish between models of Intel and AMD
- Scheduler: add a quick HR check that doesn't access the DB
- Transitioner: if a workunit has >0 error results and no success results,
    set its HR class to zero
From M.F. Somers.

db/
    boinc_db.C,h
sched/
    sched_array.C
    sched_hr.C,h
    transitioner.C

svn path=/trunk/boinc/; revision=12773
2007-05-29 23:41:31 +00:00
Rytis Slatkevičius 670bbd92d7 Donations system (running via PayPal).
Implements #211.
NOTE: DB updated needed. Documented in http://boinc.berkeley.edu/trac/wiki/PayPalDonations

svn path=/trunk/boinc/; revision=12754
2007-05-27 17:33:06 +00:00
Matt Lebofsky 136ce49b84 svn path=/trunk/boinc/; revision=12536 2007-05-02 23:17:52 +00:00
David Anderson 7ecdc2f44e - Scheduler: in reply, add <platform> element to each <app_version,
and add <platform> and <version_num> elements to <result>
        (server half of multi-version changes)
    - scheduler: make ssp a global; could eliminate from args everywhere

    db/
        boinc_db.h
    sched/
        feeder.C
        main.C,h
        sched_send.C
        sched_shmem.C,h
        server_types.C

svn path=/trunk/boinc/; revision=12535
2007-05-02 23:14:00 +00:00
Matt Lebofsky 846ec9fbb0 svn path=/trunk/boinc/; revision=12532 2007-05-02 18:51:51 +00:00
Rytis Slatkevičius 4332736ae9 Private message functionality for the forums.
NOTE: needs database update.

svn path=/trunk/boinc/; revision=12499
2007-04-29 14:22:28 +00:00
David Anderson 7e2b39c4db David 24 Apr 2007
- Server: add new database field host.error_rate.
        Stores a dynamic estimate of the fraction of the hosts's
        results that fail validation (updated by the validator).

    client/
        sim.C
        cs_prefs.C
    db/
        boinc_db.C,h
    html/ops/
        db_update.php
    sched/
        handle_request.C
        sched_msgs.h
        validator.C

svn path=/trunk/boinc/; revision=12466
2007-04-24 23:21:42 +00:00
David Anderson fe32380dcf David 23 Apr 2007
- make_project: remove --no_test_app option, add --test_app option
    - make_project: initial config in all cases has
        one_result_per_user_per_wu = 0
    - sample_assimilator: make it able to handle > 1 output file
    - boinc_cmd: make --help output more readable
    - User web: fix some undefined vars in translation.inc
        Rytis: let's try to fix PHP runtime warnings
    - DB: add default values for app table (avoid MySQL warnings)

    db/
        schema.sql
    html/
        inc/
            translation.inc
            uotd.inc
        ops/
            update_forum_activities.php
    lib/
        str_util.C
        boinc_cmd.C
    py/Boinc/
        setup_project.py
    sched/
        sample_work_generator.C
        sample_assimilator.C
    tools/
        make_project
        uc_wu, uc_result (new)

svn path=/trunk/boinc/; revision=12450
2007-04-23 16:14:47 +00:00
David Anderson bc98f0e90c *** empty log message ***
svn path=/trunk/boinc/; revision=12367
2007-04-13 22:55:18 +00:00
David Anderson 6b43ad0cbc *** empty log message ***
svn path=/trunk/boinc/; revision=12346
2007-04-11 18:05:26 +00:00
David Anderson 75a2b2c55b *** empty log message ***
svn path=/trunk/boinc/; revision=12322
2007-04-05 17:02:01 +00:00
David Anderson 81effa6a7b *** empty log message ***
svn path=/trunk/boinc/; revision=12127
2007-02-21 16:26:51 +00:00
David Anderson f7d648e350 *** empty log message ***
svn path=/trunk/boinc/; revision=12075
2007-02-13 21:41:07 +00:00
David Anderson 77e757c6f9 *** empty log message ***
svn path=/trunk/boinc/; revision=12043
2007-02-06 21:50:48 +00:00
David Anderson 01b32db626 *** empty log message ***
svn path=/trunk/boinc/; revision=12027
2007-02-02 20:14:18 +00:00
Matt Lebofsky 1ca0535532 *** empty log message ***
svn path=/trunk/boinc/; revision=11933
2007-01-22 21:49:55 +00:00
David Anderson 3967a1f924 *** empty log message ***
svn path=/trunk/boinc/; revision=11850
2007-01-12 17:42:29 +00:00
David Anderson ddd17a8b22 *** empty log message ***
svn path=/trunk/boinc/; revision=11745
2006-12-30 00:26:22 +00:00
David Anderson f4953d1829 *** empty log message ***
svn path=/trunk/boinc/; revision=11723
2006-12-27 18:22:17 +00:00
David Anderson 75af81175b *** empty log message ***
svn path=/trunk/boinc/; revision=11717
2006-12-22 20:34:58 +00:00
Rytis Slatkevičius 1a7a76a985 Missing db update in schema.sql
svn path=/trunk/boinc/; revision=11716
2006-12-22 15:57:48 +00:00
David Anderson adcd68afce *** empty log message ***
svn path=/trunk/boinc/; revision=11628
2006-12-06 20:59:29 +00:00
David Anderson ebc6c16252 *** empty log message ***
svn path=/trunk/boinc/; revision=11425
2006-10-31 20:31:21 +00:00
Rytis Slatkevičius ccff6971ca Big team change to allow founder transfer when he's no longer available
svn path=/trunk/boinc/; revision=11367
2006-10-27 16:06:42 +00:00