Commit Graph

374 Commits

Author SHA1 Message Date
David Anderson c01e75ec4c - client: shuffle code to abstract coprocessor reservation
svn path=/trunk/boinc/; revision=15287
2008-05-23 21:24:36 +00:00
David Anderson fd6bb6e637 - client: on Windows (at least) if you kill a task (e.g. reset project)
ACTIVE_TASK::handle_exited_app() never gets called,
    so the coprocessors weren't getting freed.
    Fix this.

svn path=/trunk/boinc/; revision=15242
2008-05-16 22:52:09 +00:00
David Anderson b13ad4da38 David May 9 2008
- client: increase <abort> timeout from 5 sec to 60;
        this gives the diagnostic system time to download
        symbol files (which may be several MB) and write a stack trace.

svn path=/trunk/boinc/; revision=15162
2008-05-09 16:27:20 +00:00
David Anderson 0e4eb7f6e7 - client: if we request that an app exit,
and it doesn't do so within 10 seconds, kill it.
        This deals with the situation where the app is ignoring messages
        (e.g. because it forgot to end a critical section).
    - client: if either the FP or int benchmark runs less than
        3 CPU seconds (out of 10 seconds of wall time) ignore the benchmark.
        This is an effort to deal with a problem where (for unknown reasons)
        the int benchmark runs for a tiny amount of CPU time,
        leading to an absurdly large result
    - Manager: don't prepend "[error]" to MSG_INTERNAL_ERROR messages;
        the client already does this.

    THESE ARE ALL BUG FIXES

svn path=/trunk/boinc/; revision=15128
2008-05-05 00:51:20 +00:00
David Anderson b91809d3c4 - try to get API to compile on Cygwin
svn path=/trunk/boinc/; revision=14982
2008-03-29 21:53:45 +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 80c6f55d7d - client: a project (Ralph) had accidentally included a .svn directory in a zip archive,
resulting in a lot of read-only files in its slot directories.
        When the client attempts to delete these files,
        each delete fails and the client retries for about 5 seconds.
        This adds up to a delay of about 20 minutes,
        during which the client (and Manager) appear to be hung.

        Solution:
        1) if a file delete fails with error ERROR_ACCESS_DENIED,
            use SetFileAttributes() to clear the read-only flag, then try again.
        2) Don't use the 5-second retry mechanism when clearing out
            slot directories.  These can contain unbounded numbers of files,
            and this can lead to long periods where the client appears hung.

svn path=/trunk/boinc/; revision=14557
2008-01-15 19:12:43 +00:00
David Anderson d0241d359c - renamed clean_out_dir() to client_clean_out_dir(),
and put the original clean_out_dir() back in lib/filesys.C

svn path=/trunk/boinc/; revision=14549
2008-01-14 18:32:20 +00:00
David Anderson 2be6f8e53a - Client: add <run_apps_manually> config flag.
This is for debugging apps (currently works only in Unix).
    What it does: when running an app,
    the client does everything except actually fork/exec the app,
    i.e. it sets up the slot dir, creates shared mem segment etc.
    It then continues as if the app were actually running,
    and you can then manually run your app under a debugger
    in the slot directory.
    Note: the client won't notice the termination of your app.
- API, Unix: in situations where the timer thread wants to exit
    (e.g. it notices a missing heartbeat).
    don't directly call boinc_exit(),
    since this touches data structures that the worker thread
    may be using concurrently.
    Instead, set a flag telling the worker thread to call boinc_exit()
    (which it will do from its signal handler)
    This is an attempt to fix problems reported by Bernd;
    I haven't tested it.
- scheduler: add config flag for uploading usage data
- web: show account key and weak account key on user page
- added some code for multithread support (not finished)

api/
    boinc_api.C


svn path=/trunk/boinc/; revision=14542
2008-01-13 00:12:14 +00:00
David Anderson 74c2782624 - API: code cleanup
removed references to "graphics thread"
    removed HANDLE timer_quit_event
    removed enable_heartbeat/disable_heartbeat messages
        (not sure what the ideas was, but no longer exists)
    removed heartbeat_active flag (use options.check_heartbeat instead)
    read heartbeat-channel messages even if heartbeat disabled
        (since we use that channel for WSS messages too)
- client: remove ACTIVE_TASK::thread_handle (not used)

svn path=/trunk/boinc/; revision=14323
2007-11-29 19:48:04 +00:00
David Anderson 1e2a6c29b8 - client: remove unparsed XML error for <active_task_state>
- client: remove spurious error if include <alt_platform> in cc_config.xml

svn path=/trunk/boinc/; revision=13934
2007-10-22 23:56:10 +00:00
David Anderson 1239291e44 - client: add <active_task_state> to <active_task> elements in state file.
These are needed by some 3rd-party software that uses
    the state file instead of GUI RPCs


svn path=/trunk/boinc/; revision=13921
2007-10-21 20:54:24 +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
Charlie Fenton 3158d103ab client/manager/API: Finish & fix bugs in code cleanup to disentangle sandbox code from lib/.
svn path=/trunk/boinc/; revision=13798
2007-10-09 00:34:38 +00:00
David Anderson d302a5e107 - client/manager/API: code cleanup to disentangle sandbox code from lib/.
- move client sandbox-specific code to a new file, sandbox.C
    - remove g_use_sandbox from util.C; move to MainDocument.cpp (manager)
        and sandbox.C (client)
    - don't declare check_security() in util.h; it's not in util.C
    - don't call remove_project_owned_file_or_dir() in
        boinc_delete_file_aux() or boinc_rmdir();
        rather, at the points in the client that delete
        dirs that are usually owned by boinc_projects,
        call remove_project_owned_file_or_dir() first,
        then clean_out_dir().
    - rename boinc_exec() to switcher_exec() and move it to sandbox.C

Note: this change was sparked by needing to remove a call to getgrnam()
from boinclib, to avoid requiring the same version of glibc
on both compile and target hosts

svn path=/trunk/boinc/; revision=13784
2007-10-05 16:47:07 +00:00
Charlie Fenton 153502e60a CC: Fix crash bug: set app_client_shm.shm = NULL after calling detach_shmem_mmap.
svn path=/trunk/boinc/; revision=13779
2007-10-05 10:38:01 +00:00
Charlie Fenton b2b3cdeff7 Mac/Linux/UNIX: V6 client uses shmget() to run V5 applications
svn path=/trunk/boinc/; revision=13667
2007-09-26 10:16:04 +00:00
David Anderson f1f5930579 - client: removed everything related to screensaver
(deciding which app to use, implementing blanking interval, etc.)
    This logic is all now in the screensaver itself.
- GUI RPC: removed get/set screensaver mode RPCs
- API: added a "backwards_compatible_graphics" flag to BOINC_OPTIONS.
    V6 apps should set this.
    If set, the runtime library checks for graphics messages
    from the client, and launches/kills the graphics app (if any).
    The app will then work graphically with pre-V6 clients.
- removed some old files

svn path=/trunk/boinc/; revision=13651
2007-09-25 16:04:45 +00:00
David Anderson 3838d16750 - client: restore <slot> element on GUI RPC result XML
(needed by BOINCSpy)
- client: CPU sched fix

svn path=/trunk/boinc/; revision=13584
2007-09-13 06:53:40 +00:00
Charlie Fenton 5cd7cdbc04 Begin implementation of using memory-mapped files for shared memory
svn path=/trunk/boinc/; revision=13467
2007-08-27 09:17:38 +00:00
David Anderson aefd2d4c88 - client: add mechanism to abort results if they get > 100
"premature exits" (exit(0) without finish file) between checkpoints


svn path=/trunk/boinc/; revision=13207
2007-07-20 23:42:20 +00:00
Charlie Fenton 390633ff7e Back out my shared memory changes of 27 June because it might prevent compound applications from attaching to the shared memory as needed
svn path=/trunk/boinc/; revision=13046
2007-06-28 11:09:07 +00:00
Charlie Fenton fdf8973685 CC: Mark shmem segment for eventual destruction on first msg from task (*nix only)
svn path=/trunk/boinc/; revision=13034
2007-06-27 10:29:31 +00:00
Charlie Fenton 8c4b7e6bc6 clear retry_shmem_time when releasing shared memory
svn path=/trunk/boinc/; revision=13026
2007-06-26 03:42:23 +00:00
Charlie Fenton 7bb1b1a0d4 CC: Add logic to scheduler, etc. for systems which limit the number of shared memory segments per process and / or system-wide.
svn path=/trunk/boinc/; revision=13015
2007-06-25 11:46:15 +00:00
David Anderson 9850a17167 - GUI RPC: add graphics_exec_path and slot_path fields to RESULT.
These let the Manager run the graphics app.
    Graphics apps have physical name *v6graphics*
- Separated ACTIVE_TASK::write() and ACTIVE_TASK::write_gui().
    These need to write largely disjoint set of items.
- code cleanup: remove a zillion "else"s in parsing code
- code cleanup: change a zillion match_tag(buf, "<foo/>"
    to parse_bool(buf, "foo")

client/
    app.C,h
    client_state.C
    client_types.C,h
lib/
    gui_rpc_client.h
    gui_rpc_client_ops.C
sched/
    server_types.C

svn path=/trunk/boinc/; revision=12938
2007-06-14 23:08:43 +00:00
David Anderson 1e7e58875a - client: add cmdline options --exit_before_start and --exit_after_finish.
This cause the core client to exit immediately before or after
    running a job,
    letting you examine the contents of the slot directory.
- scheduler: changed max # of CPUs used in daily_result_quota
    limit from 4 to 8, and make it a compile-time parameter
- feeder/scheduler: make the number of work items in shared
    memory configurable (in config.xml).
    The element is <shmem_work_items>
- feeder: make the size of the work item query configurable
    (<feeder_query_size)
- feeder: remove code related to removing infeasible results
    from shared mem.
    This mechanism was never needed,
    and I think a timeout would accomplish the same effect.

client/
    app.C
    app_start.C
    client_state.C,h
    cs_cmdline.C
sched/
    feeder.C
    sched_array.C
    sched_config.C,h
    sched_send.C
    sched_shmem.C,h
    sched_util.C
    show_shmem.C

svn path=/trunk/boinc/; revision=12771
2007-05-29 21:45:01 +00:00
David Anderson ca2dead91d - client simulator: make it compile on Win
- client: parse version_num in active_task to avoid spurious error msg

	client/
		app.C
		sim.C
	win_build/
		sim.vcproj

svn path=/trunk/boinc/; revision=12636
2007-05-10 16:07:45 +00:00
David Anderson 4a1741e220 - Core client: handle multiple platforms correctly.
Remove the tacet assumption that a host can handle
        applications for a single platform.
        With the Apr 30 scheduler changes,
        a project may (at different times)
        send app versions for the same app and version number,
        but different platforms.
        Before we would have ignored all but the first;
        now we handle them correctly.

        Implementation notes:
        - Add APP_VERSION.platform, RESULT.platform,
            and RESULT.version_num.
            If these are missing from an XML doc
            (e.g. an existing state file or a scheduler reply
            from a project not running current server)
            then set to the primary platform.
        - Continue to write workunit.version_num
            and active_task.version_num to state file,
            even though these are no longer part of the struct.
            This allows users to revert to an older version.

    client/
        app.C
        check_state.C
        client_state.C,h
        client_types.C,h
        cs_apps.C
        cs_scheduler.C
        cs_statefile.C
        sim.C

svn path=/trunk/boinc/; revision=12542
2007-05-03 17:14:30 +00:00
David Anderson 4931b54706 *** empty log message ***
svn path=/trunk/boinc/; revision=12335
2007-04-09 16:19:42 +00:00
David Anderson 1be9af1b1a *** empty log message ***
svn path=/trunk/boinc/; revision=12303
2007-04-03 19:35:33 +00:00
Charlie Fenton 8b58ec7490 *** empty log message ***
svn path=/trunk/boinc/; revision=12237
2007-03-16 03:16:24 +00:00
David Anderson 71afcf8c06 *** empty log message ***
svn path=/trunk/boinc/; revision=12235
2007-03-15 23:01:51 +00:00
David Anderson 138f17af40 *** empty log message ***
svn path=/trunk/boinc/; revision=12216
2007-03-13 19:33:27 +00:00
David Anderson e3dd5f75f9 *** empty log message ***
svn path=/trunk/boinc/; revision=12136
2007-02-21 22:27:35 +00:00
David Anderson 81effa6a7b *** empty log message ***
svn path=/trunk/boinc/; revision=12127
2007-02-21 16:26:51 +00:00
David Anderson 3b27b99b0e *** empty log message ***
svn path=/trunk/boinc/; revision=12056
2007-02-08 21:06:03 +00:00
David Anderson ac3e809427 *** empty log message ***
svn path=/trunk/boinc/; revision=12026
2007-02-02 17:12:07 +00:00
David Anderson a26b6a2215 *** empty log message ***
svn path=/trunk/boinc/; revision=11972
2007-01-25 23:39:06 +00:00
David Anderson 71fc6345b7 *** empty log message ***
svn path=/trunk/boinc/; revision=11957
2007-01-24 21:20:57 +00:00
David Anderson 2b3045ac49 *** empty log message ***
svn path=/trunk/boinc/; revision=11951
2007-01-24 19:31:49 +00:00
David Anderson cc9ab449e0 *** empty log message ***
svn path=/trunk/boinc/; revision=11872
2007-01-15 22:53:41 +00:00
David Anderson 3d43d682bf *** empty log message ***
svn path=/trunk/boinc/; revision=11640
2006-12-09 00:10:53 +00:00
David Anderson d3b1c45d64 *** empty log message ***
svn path=/trunk/boinc/; revision=11634
2006-12-07 17:30:48 +00:00
David Anderson adcd68afce *** empty log message ***
svn path=/trunk/boinc/; revision=11628
2006-12-06 20:59:29 +00:00
Charlie Fenton 6cd1958284 *** empty log message ***
svn path=/trunk/boinc/; revision=11559
2006-11-21 12:21:49 +00:00
David Anderson ecc969a351 *** empty log message ***
svn path=/trunk/boinc/; revision=11558
2006-11-21 00:45:22 +00:00
David Anderson e9161f7a05 *** empty log message ***
svn path=/trunk/boinc/; revision=11440
2006-11-01 23:36:13 +00:00
David Anderson 0257e48e2f *** empty log message ***
svn path=/trunk/boinc/; revision=11439
2006-11-01 22:40:30 +00:00
David Anderson 450c1737c3 *** empty log message ***
svn path=/trunk/boinc/; revision=11245
2006-10-04 17:02:58 +00:00