Commit Graph

135 Commits

Author SHA1 Message Date
David Anderson 331114d961 - client: minor code shuffle
svn path=/trunk/boinc/; revision=25627
2012-04-30 21:12:35 +00:00
David Anderson bbfbef0fe8 - client: code cleanup. Move RESULT and PROJECT to separate files
svn path=/trunk/boinc/; revision=25621
2012-04-30 21:00:28 +00:00
David Anderson 72368a6b20 - A first attempt to fix the bug where apps die with exit(1)
(whereas they didn't do this w/ older clients).
    On Windows, the client uses TerminateProcess(h, 1) to kill processes;
    the 1 is the exit code the process will appear to have.

    So instead, add a "will_restart" bool arg to the various kill
    functions, and if set use 0 (= STATUS_SUCCESS),
    otherwise use EXIT_ABORTED_BY_CLIENT.

    Note: in principle this shouldn't make any difference
    for quitting tasks,
    since handle_exited_app() checks for task state QUIT_PENDING
    and ignores the exit code in that case.
    The only place I can see where it would make any difference
    is when we kill a process because it hasn't been handling
    queued shared-memory messages for 180 seconds.

- client: add more info to the message about an exited app

- client: function return values (ERR_*) are different from
    process exit codes (EXIT_*).
    But in many places we were using return values as exit codes.
    Fix these.
    Also, break out the different types of limits a job can exceed
    (time, disk, memory) into difference exit codes.


svn path=/trunk/boinc/; revision=25601
2012-04-26 05:28:45 +00:00
David Anderson 6591272c80 - client: fix crashing bug that happened when a scheduler reply
had a parse error, and it included project files.
    While parsing the scheduler reply we'd add FILE_REFs to
    PROJECT::project_files,
    but wouldn't link them to FILE_INFOs since this is done
    only if the reply parses correctly.
    The next garbage_collect() would dereference these NULL pointers.

    Solution: parse the FILE_REFS into SCHEDULER_REPLY::project_files.
    Copy this to PROJECT::project_files only if the reply parses.


svn path=/trunk/boinc/; revision=25598
2012-04-25 05:51:26 +00:00
David Anderson 9d25481174 - scheduler: fix bug that tried to open plan class spec file
on each request.
- client: when showing how much work a scheduler request returned,
    scale by availability (as is done to show the amount of the request)
- client in account manager request, <not_started_dur> and
    <in_progress_dur> are in wall time, not run time
    (i.e. scale them by availability)

Note: there's some confusion in the code between runtime and wall time,
    where in general wall time = runtime / availability.
    New convention: let's use "runtime" for the former,
    and "duration" for the latter.

svn path=/trunk/boinc/; revision=25597
2012-04-25 04:10:29 +00:00
David Anderson c22ac04ad0 - scheduler: don't max with min_work_buffer() in estimating
job turnaround time.
    min_work_buffer doesn't necessarily reflect network disconnect periods
- client simulator: compile fixes


svn path=/trunk/boinc/; revision=25521
2012-03-30 21:39:22 +00:00
David Anderson 8ebe90fbe3 - client: report results if CPU suspend pending in next 30 min
svn path=/trunk/boinc/; revision=25492
2012-03-26 20:28:23 +00:00
David Anderson adab6254bc Update Translation
svn path=/trunk/boinc/; revision=25477
2012-03-23 16:25:19 +00:00
David Anderson ad232b2869 - client: report completed results if a time-of-day network suspend is
scheduled within the next 30 minutes


svn path=/trunk/boinc/; revision=25465
2012-03-20 19:37:04 +00:00
David Anderson a6bf5aecf3 - client: tweak to work-fetch policy:
if we're making a scheduler RPC to a project for reasons
    other than work fetch,
    and we're deciding whether to ask for work, ignore hysteresis;
    i.e. ask for work even if we're above the min buffer
    (idea from John McLeod).


svn path=/trunk/boinc/; revision=25291
2012-02-18 23:19:06 +00:00
David Anderson cdd40fcc10 - client: intermediate checkin for async file verification
svn path=/trunk/boinc/; revision=25202
2012-02-06 06:06:44 +00:00
David Anderson bba4ce24ce - client: compute projects' disk share (based on resource share).
Report it (along with disk usage) in scheduler request messages.
    This will allow the scheduler to send file-delete commands
    if the project is using more than its share.
- client: add <disk_usage_debug> log flag
- create_work: add --help, show --command_line option


svn path=/trunk/boinc/; revision=24968
2012-01-02 05:53:42 +00:00
David Anderson fc6d530a6c - client: shuffle disk usage code in preparation for disk accounting
- use new XML parser in some GUI RPC code


svn path=/trunk/boinc/; revision=24925
2011-12-28 14:52:03 +00:00
David Anderson bc35060726 - client: when contacting a project for reasons other than
work fetch (e.g. to report completed jobs)
    only request work if it's the project we would have chosen
    if we were fetching work.
- client: the way in which project priorities were adjusted
    in work fetch to reflected currently queued work was wrong.
- client: fix bug in the way project priorities are adjusted
    in RR simulator
- client emulator: if there are results in the state file
    with states DOWNLOADING or UPLOADING,
    change them to DOWNLOADED or UPLOADED.
    Otherwise they're stuck.


svn path=/trunk/boinc/; revision=24737
2011-12-06 04:21:27 +00:00
David Anderson 2ac9fe8566 - client/scheduler:
If the file "client_opaque.txt" exists on the client,
    include its contents in scheduler request messages.
    On the scheduler, parse this into SCHEDULER_REQUEST::client_opaque,
    where it can be used by the customizable scheduler functions.


svn path=/trunk/boinc/; revision=24586
2011-11-14 06:27:36 +00:00
David Anderson fb568462c6 - client: fix compile warning
svn path=/trunk/boinc/; revision=24527
2011-11-04 17:02:36 +00:00
Charlie Fenton bdf5cf405d client: Fix compile error
svn path=/trunk/boinc/; revision=24524
2011-11-04 09:27:01 +00:00
David Anderson 53af2ae778 - client/API: pass bool using_sandbox in APP_INIT_DATA;
says whether the client is using account-based sandboxing.
    Needed by vboxwrapper.
- web: don't show authenticator in Your Account page.
    The problem with authenticators is that if a bad guys gets yours,
    they can log in to your account even if you change your password.
    Eventually we should not use them at all
    (i.e. in cookies and sent to client).
- make_project: copy python stuff (e.g. bin/start) for web-only projects;
    generate appropriate project.readme file for web-only projects.


svn path=/trunk/boinc/; revision=24447
2011-10-21 06:58:35 +00:00
David Anderson 57c04979b3 - client: don't do scheduler-requested RPCs if
- project is set to No New Work, and
    - project has no jobs on the client


svn path=/trunk/boinc/; revision=24348
2011-10-07 21:20:42 +00:00
David Anderson 9d2d540267 - client: intermediate checkin for replicated trickle-ups.
Not finished yet.
- example app: add --trickle_up and --trickle_down options,
    for testing trickle messages


svn path=/trunk/boinc/; revision=24245
2011-09-20 18:49:38 +00:00
David Anderson c0f977b19c - client: fix bugs related to white space around code signing keys
- win compile fixes

svn path=/trunk/boinc/; revision=24095
2011-08-31 16:36:17 +00:00
Charlie Fenton 97f5146f2a define GPU_TYPE_NVIDIA, GPU_TYPE_ATI, use everywhere instead of literal strings "NVIDIA" and "ATI" to ensure uniformity
svn path=/trunk/boinc/; revision=24090
2011-08-31 11:08:13 +00:00
David Anderson 94e8c48220 - client: change --detach_phase_two (??) to --detach_console
- eliminate compiler warnings (e.g. shadowed vars)
    in various places, mostly in client


svn path=/trunk/boinc/; revision=23710
2011-06-12 20:58:43 +00:00
David Anderson d9574bacf7 - client: fix bug in logic that defers work fetch if upload active
svn path=/trunk/boinc/; revision=23707
2011-06-10 22:21:53 +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 e8c5e5bf5f - client: my checkin of 8 Apr 2011 didn't work in some cases, e.g.:
- client finishes a job
    - before upload starts, work fetch runs and decides to fetch work
        from that project.
    Solution:
    - set PROJECT::last_upload_start when job finishes,
        and clear it when a job is uploaded.
    - defer scheduler RPC for a limited time if last_upload_start
        is set, even if a transfer is not active


svn path=/trunk/boinc/; revision=23633
2011-06-03 18:45:21 +00:00
David Anderson e1e122a9e2 - client: if project is set to "don't request more work",
report completed tasks immediately


svn path=/trunk/boinc/; revision=23571
2011-05-21 18:24:00 +00:00
David Anderson 3f027ddf43 - client: implement "report immediately" at the level of
individual jobs rather than globally.
    To use this, projects must add <report_immediately/>
    to the <result> elements in job templates


svn path=/trunk/boinc/; revision=23515
2011-05-07 18:34:32 +00:00
David Anderson 661fec8333 - client: simplify the semantics of sticky files:
- All sticky files are reported on each scheduler RPC
    - If a scheduler reply says to delete a file, clear its sticky flag
    In particular:
    - remove the "send file list" tag in scheduler RPC replies
    - remove FILE_INFO::marked_for_delete
    - remove FILE_INFO::report_on_rpc
- remove the request_file_list program


svn path=/trunk/boinc/; revision=23431
2011-04-24 21:33:51 +00:00
David Anderson 654f2468f6 - client: replace % with %% in messages from scheduler
(else they're interpreted as format strings)


svn path=/trunk/boinc/; revision=23379
2011-04-19 05:07:08 +00:00
David Anderson 60fc3d3f22 - client: defer reporting completed tasks if an upload started recently;
we might be able to report more tasks once the upload completes.


svn path=/trunk/boinc/; revision=23356
2011-04-08 09:02:41 +00:00
David Anderson 3b906a191c - client: generalize the GPU framework so that
- new GPU types can be added easily
		- users can specify GPUs in cc_config.xml,
			referred to by app_info.xml,
			and they will be scheduled by BOINC
			and passed --device N options
			Note: the parsing of cc_config.xml is not done yet.
		- RPC protocols (account manager and scheduler)
			can now specify GPU types in separate elements
			rather than embedding them in tag names
			e.g. <no_rsc>NVIDIA</no_rsc> rather than <no_cuda/>
	- client: in account manager replies, parse elements of the form
		<no_rsc>NAME</no_rsc>
		indicating the GPUs of type NAME should not be used.
		This allows account managers to control GPU types
		not hardwired into the client.
		Note: <no_cuda/> and <no_ati/> will continue to be supported.
	- scheduler RPC reply: add
		<no_rsc_apps>NAME</no_rsc_apps>
		(NAME = GPU name)
		to indicate that the project has no jobs for the indicated GPU type.
		<no_cuda_apps> etc. are still supported 
	- client/lib: remove set_debts() GUI RPC
	- client/scheduler RPC
		remove <cuda_backoff> etc. (superceded by no_app)
		Exception: <ip_result> elements in sched request
		still have <ncudas> and <natis>.
		Fix this later.

	Implementation notes:
	- client/lib: change "CUDA" to "NVIDIA" in type/variable names, and in XML
		Continue to recognize "CUDA" for compatibility
	- host_info.coprocs no longer used within the client;
		use a global var (COPROCS coprocs) instead.
		COPROCS now has an array of COPROCs;
		GPUs types are identified by the array index.
		Index zero means CPU.
	- a bunch of other resource-specific structs (like RSC_WORK_FETCH)
		are now stored in arrays, with same indices as COPROCS
		(i.e. index 0 is CPU)
	- COPROCS still has COPROC_NVIDIA and COPROC_ATI structs to hold vendor-specific info
	- APP_VERSION now has a struct GPU_USAGE to describe its GPU usage

svn path=/trunk/boinc/; revision=23253
2011-03-25 03:44:09 +00:00
David Anderson 4f7ceb2334 - client: remove auto update stuff from makefiles.
This feature is mothballed.


svn path=/trunk/boinc/; revision=23103
2011-02-24 22:18:14 +00:00
David Anderson ea23152216 - client: don't send <?xml to scheduler; it doesn't expect it
- scheduler: handle optional <?xml


svn path=/trunk/boinc/; revision=23091
2011-02-23 01:03:46 +00:00
David Anderson 44addd53d3 - client: send <?xml version="1.0" encoding="UTF-8" ?>
at start of scheduler and account manager requests.


svn path=/trunk/boinc/; revision=23090
2011-02-23 00:57:08 +00:00
David Anderson 3928100518 - client: fix bug in mechanism that defers work request until
pending uploads are finished.
    Due to a typo, this was not being done.

svn path=/trunk/boinc/; revision=23047
2011-02-16 19:44:38 +00:00
David Anderson 229b1373dc - client: make "wrong URL" message not be a notice
- web: fix caching problem when PHP not installed as Apache module

svn path=/trunk/boinc/; revision=22968
2011-02-01 04:43:19 +00:00
David Anderson 6784283211 - user web: fix bugs in server status page
- fix some indentation


svn path=/trunk/boinc/; revision=22890
2011-01-06 23:09:13 +00:00
David Anderson 878ec29353 - client: improve text of "message from server" notices
- manager: change "add account manager" to "use account manager".
		"Add" is confusing, because you can't add multiple account managers
		like you add projects.
	- client: recognize a few new ATI GPU models
		from Robert Kreß

svn path=/trunk/boinc/; revision=22843
2010-12-17 18:56:10 +00:00
David Anderson 18f2e90929 - client: work fetch: if the chosen project is currently uploading a file,
and an upload started in the last 5 min, don't fetch work from it.
    The goal is to merge the 2 scheduler RPCs
    (fetch work, report completed taskS) into a single RPC.
    Note: this may result in idleness in some cases.
- scheduler: if client doesn't handle plan class (pre-5.10),
    check plan-class app versions anyway,
    but only use if it's a single-CPU app.
    This allows single-CPU app versions with specific requirements
    (like SSE) to be issued to old clients.
    From Bernd Machenschalk


svn path=/trunk/boinc/; revision=22841
2010-12-13 22:58:15 +00:00
David Anderson 8d9cf013c5 - client: account manager RPC:
Additions to request message:
        <not_started_dur>X</not_started_dur>
        <in_progress_dur>X</in_progress_dur>
        The estimated remaining duration of unstarted
        and in-progress tasks
    Additions to reply message, within <project>, optional:
        <suspend>0|1</suspend>
            suspend or resume project (overrides local state)
        <abort_not_started>0|1</abort_not_started>
            if set, abort unstarted jobs


svn path=/trunk/boinc/; revision=22698
2010-11-17 20:04:58 +00:00
David Anderson ccac28c863 - client: when an app exits, adjust debts before erasing ACTIVE_TASK.
Otherwise the last episode won't get accounted
- client simulator: add output file for debt info

svn path=/trunk/boinc/; revision=22505
2010-10-14 19:07:02 +00:00
Charlie Fenton db5832a189 client: fix compiler warning
svn path=/trunk/boinc/; revision=22503
2010-10-14 08:11:40 +00:00
David Anderson ac83e1e9f7 - client: fix bug with the <max_tasks_reported> config option.
If # of ready-to-report tasks > max_tasks_reported,
    then the excess ready-to-report tasks weren't getting
    reported to the scheduler at all (i.e. not in <other_results> either)
    so the scheduler would resend them
    (not a fatal problem, but a waste of bandwidth).
    From Josef Segur.

svn path=/trunk/boinc/; revision=22500
2010-10-13 23:21:19 +00:00
David Anderson d7d2ebef85 - client: add <max_tasks_reported> config item:
limit the # of completed tasks reported per RPC

svn path=/trunk/boinc/; revision=22467
2010-10-07 16:02:44 +00:00
David Anderson c7e13eafb3 - client: write GPU info to client_state.xml,
so that it can be input file to the client simulator.

svn path=/trunk/boinc/; revision=22405
2010-09-23 20:54:49 +00:00
David Anderson ec2577771f - client: when computing non-BOINC CPU usage,
allow for the possibility that suspended BOINC apps
    aren't really suspended
    (e.g. multithread apps that don't use boinc_init_parallel())
- client: message tweak

svn path=/trunk/boinc/; revision=22388
2010-09-18 04:04:08 +00:00
David Anderson 7c4363a7ba - client: improve "wrong URL" messages
- client: add title to client/server messages: "Notice from BOINC"

svn path=/trunk/boinc/; revision=22383
2010-09-17 05:24:37 +00:00
David Anderson 11fc2dcdd2 - client: treat notices from schedulers a little differently.
Ignore duplicate notices unless they're at least 24 hours
    newer than the previous one.

svn path=/trunk/boinc/; revision=22293
2010-08-26 21:26:52 +00:00
David Anderson 6b8a569d6d - client/scheduler: fix a group of bugs related to the new mechanism
where the client tells the scheduler which app versions
    its queued jobs use
    (this is needed, e.g., to enforce per-app or per-resource job limits).
    In this mechanism, the client sends an array of <app_version>s,
    and each <other_result> includes an index into this array.

    - The wrong index was being sent (client).
    - If an <app_version> had a non-existent app name
        (e.g. because that app had been deprecated)
        it wasn't getting put in the array, invalidating array indices
        Furthermore, an erroneous message was being sent to the user

        Fix: if parse error for <app_version>,
        put it in the array anyway, but with cav.app = NULL,
        meaning that it's a place-holder.
        Send a message to user only if anon platform.

- manager: increase notice buffers to 64K

svn path=/trunk/boinc/; revision=22052
2010-07-23 17:43:20 +00:00