Commit Graph

88 Commits

Author SHA1 Message Date
Rom Walton 2cc9a0b6c4 client: Cleanup low hanging fruit with regards to cleaning up sprintf.
Use snprintf instead.
2016-02-18 00:59:13 -05:00
Rom Walton 59b5bf2f71 client: Cleanup low hanging fruit with regards to cleaning up strcpy and strcat use.
Use safe_strcpy and safe_strcat when dealing with non-pointer data types.
2016-02-15 23:34:18 -05:00
Rom Walton 56da6b11fb client: Cleanup low hanging fruit with regards to cleaning up strcpy and strcat use.
Use safe_strcpy and safe_strcat when dealing with non-pointer data types.
2016-02-15 21:53:07 -05:00
Christian Beer 9bbcf9a73a initialize field in constructor
Coverity obviously can't handle structs that have the same name but are in two different components, so it showed this under Various and not Client.
fixes CID 27929 found by Coverity
2015-10-22 09:12:58 +02:00
Christian Beer c4ba2d2ca8 initialize fields in constructors
fixes CID 27958 found by Coverity Scan
2015-10-20 17:51:46 +02:00
David Anderson 656070aa6e client: fix bug where project boolean attributes are stuck at true.
Projects had some boolean attributes (verify_files_on_app_start,
ended, non_cpu_intensive) that are send in scheduler replies
and thereafter stored in the client state file.
If a project stopped sending one of these attributes,
it would never get cleared.

Solution: treat the absence of the flag in the scheduler reply
as meaning false.
2015-06-14 13:07:54 -07:00
David Anderson 9c96108c67 client: work fetch code cleanup
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.
2014-10-10 10:37:07 -07:00
David Anderson 9f1625a0a7 scheduler and client: fix mechanism for exposing user CPID to GUI
A month or two ago I added code to put user CPID in the project info
exported via GUI RPC, so that GUIs (like BoincTasks) could link
to user pages on stats sites.

However, I completely forgot that the CPID known to the client
(PROJECT::cross_project_id) is the "internal CPID",
while what gets exported to stats is the "external CPID",
which is MD5(internal CPID, email addr).

Solution: include the external CPID in scheduler replies,
store it in the client state file,
and export it in GUI RPCs as PROJECT::external_cpid.

This will eventually work for BoincTasks,
but only after projects update their server software,
and volunteers update their client software.
2014-08-08 12:58:08 -07:00
David Anderson 1e2fcb4b68 client/lib: change CONFIG to CC_CONFIG, config to cc_config.
Eliminates ambiguity of "config" global var, which is used in server code.
This confuses IDEs that are looking at all the code at once.
2014-05-08 00:51:18 -07:00
David Anderson 5188d65bff client: use user-friendly GPU names in log msgs 2014-02-24 20:54:42 -08:00
David Anderson fe8b26ac73 client: when not piggybacking work request, explain why in log msg 2014-02-24 18:45:25 -08:00
David Anderson f327561a19 client: tweak last commit; don't clear flags if anonymous platform 2013-11-05 14:45:17 -08:00
David Anderson 9778177448 client: clear no_rsc_apps[] flags before parsing scheduler reply. Otherwise they'll never get cleared if server doesn't explicitly send. 2013-11-05 12:56:51 -08:00
David Anderson 0022c9c5ad client: if project sends dont_use_dcf, set its DCF to 1 2013-06-17 21:53:48 -07:00
David Anderson 846b8c7757 all components: change strcpy() to strlcpy() when possible.
This commit should cover the client and manager code.
2013-06-03 20:24:48 -07:00
David Anderson 68331492ac - client: Avoid showing too-old stats in GUI.
Trim old credit statistics on each GUI RPC
    as well as each scheduler reply.
2013-04-17 01:25:24 -07:00
David Anderson 128da198b6 - client: rename two different functions named backoff()
to make it easier to see what's going on.
- fix code formatting in manager
2013-03-22 10:43:05 +01:00
David Anderson 1174b00aba - client/manager: tweaks to Intel GPU code 2013-03-04 15:27:25 +01:00
Charlie Fenton ce87ec9848 OpenCL: First pass at adding support for Intel Ivy Bridge GPUs 2013-03-04 15:23:39 +01:00
David Anderson fdc085264a - client (Win) preallocate large files to avoid file fragmentation
when you write to them incrementally
    (workaround for shoddy filesystem design)
- admin web: remove line that limited mass emails to 10
2013-03-04 15:23:37 +01:00
David Anderson e79d3ea4c8 - client: change the way project disk share is computed.
- Allow projects to report "desired disk usage" (DDU).
        If the client learns that a project wants disk space,
        it can shrink the allocation to other projects.
    - Base share computation on DDU rather than disk usage.
    - Introduce the notion of "disk resource share".
        This is defined (somewhat arbitrarily) as resource share
        plus 1/10 of the largest resource share.
        This is intended to ensure that even zero-share projects
        get enough disk space to store app versions and data files;
        otherwise they wouldn't be able to compute.
- server: use host.d_boinc_max (which wasn't being used)
    to start d_project_share reported by client.
- volunteer storage: change the way hosts are allocated to chunks.
    Allow hosts to store several chunks of the same file, if needed


svn path=/trunk/boinc/; revision=26052
2012-08-22 04:02:52 +00:00
David Anderson 446bc4ca28 - client: take GPU exclusions into account when making
initial work request to a project
- client: put some casts to double in NVIDIA detect code.
    Shouldn't make any difference.
- volunteer storage: truncate file to right size after retrieval


svn path=/trunk/boinc/; revision=26051
2012-08-20 23:41:27 +00:00
David Anderson 68f9880615 - client: remove "device" entry from CUDA_DEVICE_PROP,
and change types of mem-size fields from int to double.
    These fields are size_t in NVIDIA's version of this;
    however, cuDeviceGetAttribute() returns them as int,
    so I don't see where this makes any difference.
- client: fix bug in handling of <no_rsc_apps> element.
- scheduler: message tweaks.
    Note: [foo] means that the message is enabled by <debug_foo>.



svn path=/trunk/boinc/; revision=25849
2012-07-05 20:24:17 +00:00
David Anderson 89578050f7 - When the client makes a scheduler RPC without requesting work,
and there's a simple reason
    (e.g. the project is suspended, no-new-tasks, downloads stalled, etc.)
    show it in the event lot.
    If the reason is more complex, don't try to explain.


svn path=/trunk/boinc/; revision=25827
2012-07-02 03:43:05 +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 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 759c23ed27 - server: create a harness for testing validator code.
If you link your functions (init_result(), compare_results(),
    cleanup_result()) with validate_test.cpp,
    you'll get a program that you can run as
        validate_test file1 file2
    and it will compare the two files
    (this works only for validators that expect 1 file per result).

    I added a makefile, sched/makefile_validator_test,
    that you can use for this.
- server: shuffle code so that the above doesn't need to
    link MySQL libraries
- client: if we fetch a master file and it contains no scheduler URLs,
    show a message of class INTERNAL_ERROR
- client/scheduler: make CUDA_DEVICE_PROP.totalGlobalMem a double,
    and remove dtotalGlobalMem.
    Although NVIDIA reports RAM size as a size_t,
    there's no reason to store it as an integer after that.


svn path=/trunk/boinc/; revision=25542
2012-04-10 00:32:35 +00:00
David Anderson adab6254bc Update Translation
svn path=/trunk/boinc/; revision=25477
2012-03-23 16:25:19 +00:00
David Anderson 5c02170d5a - storage simulator: add stats for network load and fault tolerance.
- client: msg tweak
- client: minimum work buffer lower bound is 180 sec
- scheduler: in computing HOST_USAGE::project_flops for a job,
    if we don't have sufficient elapsed_time statistics
    for either the (host, app_version) or the app_version,
    use a conservative estimate (p_fpops*(#cpus+#ngpus))
    rather than the number returned by app_plan().
    This avoids "time limit exceeded" errors when the latter is way off.


svn path=/trunk/boinc/; revision=24820
2011-12-16 19:45:31 +00:00
David Anderson 54311606e3 - client: associate a PROJECT with HTTP_OP where applicable,
so that if you use <http_debug> and filter by project
    you don't see other projects' HTTP stuff
- client simulator: cc_config.xml is part of the scenario;
    log flags are part of the simulation


svn path=/trunk/boinc/; revision=24410
2011-10-18 04:23:03 +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 1383142b03 - client: use new XML parser pretty much everywhere
svn path=/trunk/boinc/; revision=23984
2011-08-11 06:17:33 +00:00
David Anderson 609d5665cc - client: pass XML_PARSER& rather than MIOFILE& to parse functions.
Preparatory to using new-style XML parsing everywhere.


svn path=/trunk/boinc/; revision=23975
2011-08-09 21:44:14 +00:00
David Anderson 880d01af58 - client: debug distributed storage functions
svn path=/trunk/boinc/; revision=23867
2011-07-20 22:29:17 +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 2ab0613f06 - client: fix message describing work request
svn path=/trunk/boinc/; revision=23380
2011-04-19 05:14:45 +00:00
David Anderson 3b1b7e9204 - client:
- add <heartbeat_debug> log flag
    - show trickle-up and int file upload msgs if <app_msg_receive> set
    - if scheduler RPC reason is trickle-up, say so
- manager:
    - restore "non CPU intensive" to task description
    - project properties: show if RPC in progress or trickle-up pending.
        (show these low-probability things only if present)
- manager: fix Unix build

(from Ian Hay)


svn path=/trunk/boinc/; revision=23365
2011-04-14 01:04:10 +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 4c4532a35e - client: finish [22902] (pass user ID, team ID to apps).
Forgot to parse them in scheduler reply.

svn path=/trunk/boinc/; revision=23095
2011-02-23 20:47:25 +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 b179bf37d0 - client: improve the way credit history is maintained
Old: maintain list of daily records.
        When add a new record, delete records older than a month
    Problem:
        If there's a gap in the record (e.g. because project was down)
        deleting old records may result in a list that
        has an entry only for today.
        Data for the last month is lost.
    New:
        When appropriate, adjust the date of old records
        rather than deleting them


svn path=/trunk/boinc/; revision=22722
2010-11-19 17:12:10 +00:00
David Anderson 866c627399 - client: fix yesterday's checkin [22661] for anonymous platform:
if project P is anonymous platform
        don't request work for resource R from P
        if there is no app version using R in P/app_info.xml
    else
        don't request work for resource R from P
        if P tells us it has no app versions using R

svn path=/trunk/boinc/; revision=22675
2010-11-10 20:23:20 +00:00
David Anderson 3648818499 - client, scheduler, RPC protocol:
- If the scheduler doesn't have any app versions for resource type X,
        it includes an element <no_X_apps>1</no_X_apps> in the reply msg
        (e.g., <no_cpu_apps>1</no_cpu_apps>)
    - The client parses and stores these flags,
        and doesn't ask a project for work for a resource
        if the project doesn't have app versions for it.
    Apparently I started this change in [19375] (October 2009)
    and forgot to finish it.


svn path=/trunk/boinc/; revision=22661
2010-11-09 19:04:24 +00:00
David Anderson e6431bfbde - client: msg tweak
- client: ignore exclusive apps including "boinc"
- client simulator: fixes

svn path=/trunk/boinc/; revision=22566
2010-10-20 23:45:49 +00:00
David Anderson 1c4422985f - client: add <no_info_fetch> config option and --no_info_fetch
cmdline arg.
    Suppresses the fetch of project list and of current client version #.
    Use when running on grid nodes.
- debugging on client simulator.  Not done yet.

svn path=/trunk/boinc/; revision=22414
2010-09-27 20:34:47 +00:00
David Anderson ec151ec6a2 - finish the above
svn path=/trunk/boinc/; revision=22325
2010-09-08 20:20:02 +00:00
David Anderson f9adad65b6 - client: ignore case in names of "exclusive apps"
and exclusive GPU apps
	- client: fix bug that caused GPU apps to not be
		suspended or resumed immediately after
		exclusive GPU app transition
	- client: in log message, instead of saying
		"fetching tasks for GPU", say which kind of GPU

svn path=/trunk/boinc/; revision=22298
2010-08-27 18:22:59 +00:00