diff --git a/checkin_notes b/checkin_notes index b443eb30da..29c072f3d0 100755 --- a/checkin_notes +++ b/checkin_notes @@ -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 diff --git a/sched/sched_send.C b/sched/sched_send.C index b25e3e0646..e225bf5c6b 100644 --- a/sched/sched_send.C +++ b/sched/sched_send.C @@ -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 { diff --git a/sched/transitioner.C b/sched/transitioner.C index 2f5bc0d53b..126a0d47fc 100644 --- a/sched/transitioner.C +++ b/sched/transitioner.C @@ -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; }