diff --git a/checkin_notes b/checkin_notes
index ad647eb6ca..89cf5d567e 100755
--- a/checkin_notes
+++ b/checkin_notes
@@ -3954,3 +3954,20 @@ Rom 24 Apr 2007
win_build/
*.vcproj
+
+David 24 Apr 2007
+ - Server: add new database field host.error_rate.
+ Stores a dynamic estimate of the fraction of the hosts's
+ results that fail validation (updated by the validator).
+
+ client/
+ sim.C
+ cs_prefs.C
+ db/
+ boinc_db.C,h
+ html/ops/
+ db_update.php
+ sched/
+ handle_request.C
+ sched_msgs.h
+ validator.C
diff --git a/client/cs_prefs.C b/client/cs_prefs.C
index 0db4f26481..b148a1e4e0 100644
--- a/client/cs_prefs.C
+++ b/client/cs_prefs.C
@@ -407,7 +407,7 @@ void CLIENT_STATE::read_global_prefs() {
(host_info.m_nbytes*global_prefs.ram_max_used_idle_frac)/MEGA
);
msg_printf(NULL, MSG_INFO,
- "Preferences: limit disk usage to %.2fGB",
+ "Preferences limit disk usage to %.2fGB",
allowed_disk_usage()/GIGA
);
// max_cpus, bandwidth limits may have changed
diff --git a/client/sim.C b/client/sim.C
index d57c9553c3..e1e6ee8d66 100644
--- a/client/sim.C
+++ b/client/sim.C
@@ -352,13 +352,14 @@ bool CLIENT_STATE::simulate_rpc(PROJECT* _p) {
wup->rsc_fpops_est = ap->fpops_est;
results.push_back(rp);
double ops = ap->fpops.sample();
+ if (ops < 0) ops = 0;
rp->final_cpu_time = ops/net_fpops;
rp->report_deadline = now + ap->latency_bound;
sprintf(buf, "got job %s: CPU time %.2f, deadline %s
",
rp->name, rp->final_cpu_time, time_to_string(rp->report_deadline)
);
html_msg += buf;
- p->work_request -= ap->fpops_est/net_fpops;
+ p->work_request -= p->duration_correction_factor*ap->fpops_est/net_fpops;
}
p->work_request = 0;
request_schedule_cpus("simulate_rpc");
@@ -920,7 +921,7 @@ void parse_error(char* file, int retval) {
}
void help(char* prog) {
- fprintf(stderr, "usage: %s [--duration X] [--delta X]\n", prog);
+ fprintf(stderr, "usage: %s [--duration X] [--delta X] [--dirs ...]\n", prog);
exit(1);
}
diff --git a/db/boinc_db.C b/db/boinc_db.C
index 07ef1e7618..9c46d7da8c 100644
--- a/db/boinc_db.C
+++ b/db/boinc_db.C
@@ -358,7 +358,8 @@ void DB_HOST::db_print(char* buf){
"credit_per_cpu_sec=%.15e, "
"venue='%s', nresults_today=%d, "
"avg_turnaround=%f, "
- "host_cpid='%s', external_ip_addr='%s', max_results_day=%d ",
+ "host_cpid='%s', external_ip_addr='%s', max_results_day=%d, "
+ "error_rate=%f ",
create_time, userid,
rpc_seqno, rpc_time,
total_credit, expavg_credit, expavg_time,
@@ -376,7 +377,8 @@ void DB_HOST::db_print(char* buf){
credit_per_cpu_sec,
venue, nresults_today,
avg_turnaround,
- host_cpid, external_ip_addr, max_results_day
+ host_cpid, external_ip_addr, max_results_day,
+ error_rate
);
UNESCAPE(domain_name);
UNESCAPE(serialnum);
@@ -434,10 +436,12 @@ void DB_HOST::db_parse(MYSQL_ROW &r) {
strcpy2(host_cpid, r[i++]);
strcpy2(external_ip_addr, r[i++]);
max_results_day = atoi(r[i++]);
+ error_rate = atof(r[i++]);
}
-// update fields that differ from the argument HOST.
-// called from scheduler (handle_request.C)
+// Update fields that differ from the argument HOST.
+// Called from scheduler (handle_request.C),
+// so only include fields modified by the scheduler.
//
int DB_HOST::update_diff(HOST& h) {
char buf[LARGE_BLOB_SIZE], updates[LARGE_BLOB_SIZE], query[LARGE_BLOB_SIZE];
diff --git a/db/boinc_db.h b/db/boinc_db.h
index e898f949f0..fc482c08db 100755
--- a/db/boinc_db.h
+++ b/db/boinc_db.h
@@ -280,6 +280,8 @@ struct HOST {
char external_ip_addr[256]; // IP address seen by scheduler
int max_results_day; // maximum # of results to send per day per CPU
// this is dynamically adjusted to limit work sent to bad hosts
+ double error_rate; // dynamic estimate of fraction of results
+ // that fail validation
// the following not stored in DB
//
diff --git a/db/schema.sql b/db/schema.sql
index 3c1111f67c..b04720c937 100644
--- a/db/schema.sql
+++ b/db/schema.sql
@@ -6,8 +6,9 @@
html/
inc/
host.inc (host)
- ops/
db_ops.inc
+ ops/
+ db_update.php
user/
create_account_action.php (user)
team_create_action.php (team)
@@ -167,6 +168,7 @@ create table host (
host_cpid varchar(254),
external_ip_addr varchar(254),
max_results_day integer not null,
+ error_rate double not null default 0,
primary key (id)
) type=InnoDB;
diff --git a/doc/boinc_news.php b/doc/boinc_news.php
index 12cd491284..93265534cc 100644
--- a/doc/boinc_news.php
+++ b/doc/boinc_news.php
@@ -1,6 +1,17 @@
$project_news = array(
+array("April 23, 2007",
+ "Krystof Dolezal's
+ Flash-based BOINC tutorials
+ are now available in English and Slovak,
+ as well as Czech."
+),
+array("April 23, 2007",
+ "BOINCstats and BAM! are now available in the Czech language
+ (http://cz.boincstats.com).
+ Thanks to Zelvuska for the translation."
+),
array("April 17, 2007",
"Desktopgrid.hu
has been created by the Computer and Automation Research Institute
diff --git a/doc/index.php b/doc/index.php
index 52d53b0d0c..a2e885103f 100644
--- a/doc/index.php
+++ b/doc/index.php
@@ -68,7 +68,7 @@ function show_participate() {
".sprintf(tr(HOME_P3), "", "")."