diff --git a/checkin_notes b/checkin_notes index 43bd5d72ee..0cae632bdf 100644 --- a/checkin_notes +++ b/checkin_notes @@ -3363,15 +3363,15 @@ Charlie 25 Mar 2009 gui_rpc_client.h Charlie 26 Mar 2009 - - Mac: revise XCode project to use OS 10.4 SDK for building PowerPC libraries - and executables so that we can use weak-linking for APIs not available - before OS 10.4, such as uselocale(). - - MGR: Modify SET_LOCALE constructor and destructor to change locale only on - those systems without support for setting locale on a per-thread basis, - such as OS 10.3.9. - NOTE: At this point it appears that Ubuntu and Fedora both support uselocale(). - If any platform does not support it, change the "#if 0" gui_rpc_client.h - to "#if defined(some_OS)". + - Mac: revise XCode project to use OS 10.4 SDK for building PowerPC + libraries and executables so that we can use weak-linking for + APIs not available before OS 10.4, such as uselocale(). + - MGR: Modify SET_LOCALE constructor and destructor to change locale + only on those systems without support for setting locale + on a per-thread basis, such as OS 10.3.9. + NOTE: At this point it appears that Ubuntu and Fedora both support + uselocale(). If any platform does not support it, + change the "#if 0" gui_rpc_client.h to "#if defined(some_OS)". clientgui/ AsyncRPC.cpp @@ -3380,3 +3380,11 @@ Charlie 26 Mar 2009 mac_build/ boinc.xcodeproj/ project.pbxproj + +David 26 Mar 2009 + - client: clear resource backoffs on user-requested RPC + - client: randomize resource backoffs to avoid lockstep + + client/ + cs_scheduler.cpp + work_fetch.cpp diff --git a/client/cs_scheduler.cpp b/client/cs_scheduler.cpp index b1d6a5ff68..a3fec1c061 100644 --- a/client/cs_scheduler.cpp +++ b/client/cs_scheduler.cpp @@ -362,11 +362,12 @@ bool CLIENT_STATE::scheduler_rpc_poll() { // p = next_project_sched_rpc_pending(); if (p) { - // if the user requested the RPC, clear backoffs to allow work requests + // if the user requested the RPC, + // clear backoffs to allow work requests // if (p->sched_rpc_pending == RPC_REASON_USER_REQ) { - p->cpu_pwf.backoff_time = 0; - p->cuda_pwf.backoff_time = 0; + p->cpu_pwf.clear_backoff(); + p->cuda_pwf.clear_backoff(); } work_fetch.compute_work_request(p); scheduler_op->init_op_project(p, p->sched_rpc_pending); diff --git a/client/work_fetch.cpp b/client/work_fetch.cpp index 6af527e2ff..cbedd0b8b6 100644 --- a/client/work_fetch.cpp +++ b/client/work_fetch.cpp @@ -15,6 +15,8 @@ // You should have received a copy of the GNU Lesser General Public License // along with BOINC. If not, see . +#include "util.h" + #include "client_types.h" #include "client_msgs.h" #ifdef SIM @@ -743,10 +745,11 @@ void RSC_PROJECT_WORK_FETCH::backoff(PROJECT* p, char* name) { } else { backoff_interval = MIN_BACKOFF_INTERVAL; } - backoff_time = gstate.now + backoff_interval; + double x = drand()*backoff_interval; + backoff_time = gstate.now + x; if (log_flags.work_fetch_debug) { msg_printf(p, MSG_INFO, - "[wfd] backing off %s %.0f sec", name, backoff_interval + "[wfd] backing off %s %.0f sec", name, x ); } }