diff --git a/sched/trickle_deadline.cpp b/sched/trickle_deadline.cpp index b57d966fda..c86937ba04 100644 --- a/sched/trickle_deadline.cpp +++ b/sched/trickle_deadline.cpp @@ -16,10 +16,12 @@ // along with BOINC. If not, see . // The following is a deadline trickle handler. -// It extends the deadline of the task_id the app sends us. +// It extends the deadline of the result the app sends us. +// This prevents duplicating the job when the original deadline is reached. +// Note: there is no effect on the client; +// currently there's no mechanism for sending the new deadline to the client. -// -// message format: +// trickle message format: // // x // x @@ -72,7 +74,7 @@ int handle_trickle(MSG_FROM_HOST& mfh) { char buf[256]; int cpu_time = 0; // not needed but parsed to limit unexpected tag warnings - printf("got trickle-up \n%s\n\n", mfh.xml); + //printf("got trickle-up \n%s\n\n", mfh.xml); MIOFILE mf; @@ -82,33 +84,44 @@ int handle_trickle(MSG_FROM_HOST& mfh) { while (!xp.get_tag()) { if (xp.parse_int("cpu_time", cpu_time)) break; if (xp.parse_str("result_name", task_name, 256)) break; - log_messages.printf(MSG_NORMAL, "unexpected tag: %s\n", xp.parsed_tag); + log_messages.printf(MSG_NORMAL, + "[HOST#%u] unexpected tag: %s\n", + mfh.hostid, xp.parsed_tag + ); } if (strlen(task_name) == 0) { log_messages.printf(MSG_NORMAL, - "unexpected empty result_name attribute\n" + "[HOST#%u] unexpected empty result_name attribute\n", + mfh.hostid ); return ERR_XML_PARSE; } DB_RESULT task; - sprintf(buf, " where name='%s'", task_name); + sprintf(buf, " where name='%s' and hostid=%u", task_name, mfh.hostid); int retval = task.lookup(buf); - if (retval) return retval; + if (retval) { + log_messages.printf(MSG_CRITICAL, + "[HOST#%u] error while looking for result_name: %s\n", + mfh.hostid, task_name + ); + return retval; + } // sanity checks - customize as needed // if (task.report_deadline < dtime()) { log_messages.printf(MSG_NORMAL, - "Report deadline is in the past: %d\n", task.report_deadline + "[RESULT#%u][HOST#%u] report deadline is in the past\n", + task.id, mfh.hostid ); - // don't do anything for now + // don't do anything for now (could reactivate the result here) return 0; } if ((task.report_deadline - extension_timeframe) > dtime()) { log_messages.printf(MSG_DEBUG, - "Report deadline is too far in the future: %d\n", - task.report_deadline + "[RESULT#%u][HOST#%u] report deadline is too far in the future\n", + task.id, mfh.hostid ); // don't do anything return 0; @@ -119,8 +132,8 @@ int handle_trickle(MSG_FROM_HOST& mfh) { retval = task.update(); if (retval) return retval; log_messages.printf(MSG_DEBUG, - "Report deadline of result %d extended to %d\n", - task.get_id(), task.report_deadline + "[RESULT#%u][HOST#%u] report deadline extended to %d\n", + task.id, mfh.hostid, task.report_deadline ); return 0; -} \ No newline at end of file +}