scheduler: fixed to checkins on 28 July

(1) Put core client version number into wreq BEFORE searching for
          an app version. Problem is that reply.wreq.core_client_version was only being set in
          send_work(), which was too late for the resend_lost_work() part
          of the code.  You might want to move all the initialization of reply.wreq
          out of send_work().   The core client version is needed to see if the
          app is compatible with it when calling get_app_version().
      (2) In retransmitting lost work, do NOT set the deadline to new
          values.  Else the result will never time out!  But DO reset
          the sent_time, to indicate that result was resent.
transitioner:
          In the transitioner, make the next WU transition time be the min
          of deadlines of the in progress results, NOT the min of the
          sent_time+delay bound.  Unless a project wants to do dynamic
          adjustment of delay bounds for in progress results this should be OK.
          CPDN people: I don't think this does any harm for trickles but
          you might want to give it a quick look to be 100% sure.

svn path=/trunk/boinc/; revision=6870
This commit is contained in:
Bruce Allen 2005-07-29 08:13:23 +00:00
parent cc29afb18e
commit a009ee9af7
3 changed files with 32 additions and 2 deletions

View File

@ -9666,3 +9666,26 @@ Rom 29 July 2005
MainFrame.cpp
WizAttachProject.cpp, .h
stdwx.h
Bruce 29 July 2005
- scheduler: fixed to checkins on 28 July
(1) Put core client version number into wreq BEFORE searching for
an app version. Problem is that reply.wreq.core_client_version was only being set in
send_work(), which was too late for the resend_lost_work() part
of the code. You might want to move all the initialization of reply.wreq
out of send_work(). The core client version is needed to see if the
app is compatible with it when calling get_app_version().
(2) In retransmitting lost work, do NOT set the deadline to new
values. Else the result will never time out! But DO reset
the sent_time, to indicate that result was resent.
- transitioner:
In the transitioner, make the next WU transition time be the min
of deadlines of the in progress results, NOT the min of the
sent_time+delay bound. Unless a project wants to do dynamic
adjustment of delay bounds for in progress results this should be OK.
CPDN people: I don't think this does any harm for trickles but
you might want to give it a quick look to be 100% sure.
sched/
sched_send.C
transitioner.C

View File

@ -652,8 +652,8 @@ int add_result_to_reply(
//
result.hostid = reply.host.id;
result.userid = reply.user.id;
result.sent_time = time(0);
if (result.server_state != RESULT_SERVER_STATE_IN_PROGRESS) {
result.sent_time = time(0);
result.report_deadline = result.sent_time + wu.delay_bound;
result.server_state = RESULT_SERVER_STATE_IN_PROGRESS;
} else {

View File

@ -479,7 +479,14 @@ int handle_wu(
TRANSITIONER_ITEM& res_item = items[i];
if (res_item.res_id) {
if (res_item.res_server_state == RESULT_SERVER_STATE_IN_PROGRESS) {
x = res_item.res_sent_time + wu_item.delay_bound;
// In cases where a result has been RESENT to a host, the
// report deadline time may be EARLIER than
// sent_time + delay_bound
// because the sent_time has been updated with the later
// "resend" time.
//
// x = res_item.res_sent_time + wu_item.delay_bound;
x = res_item.res_report_deadline;
if (x < wu_item.transition_time) {
wu_item.transition_time = x;
}