mirror of https://github.com/BOINC/boinc.git
- assimilator: there was a bug in the situation where:
1) a WU is marked as ready for assimilation and has no errors; 2) it has no canonical result In this case, the assimilate handler gets called anyway, typically with the canonical result of the previous WU as arg. Note: this situation doesn't arise normally; it might happen if some results are deleted accidentally. The fix: - identify this situation, and set the WU.error_mask to a new code (WU_ERROR_NO_CANONICAL_RESULT) - zero out the "canonical_result" variable passed to the handler, so even if the handler fails to check wu.error_mask, at least it won't assimilate the same result twice. Thanks to Hendrik Verhoek for finding this bug. - DB schema: team table type is MyISAM, not InnoDB svn path=/trunk/boinc/; revision=13938
This commit is contained in:
parent
f77ad4b0aa
commit
618a5c1651
104
checkin_notes
104
checkin_notes
|
@ -9294,7 +9294,7 @@ David 7 Oct 2007
|
||||||
html/inc/
|
html/inc/
|
||||||
team.inc
|
team.inc
|
||||||
|
|
||||||
Janus 8 Oct 2007
|
Janus 8 Oct 2007
|
||||||
Bittorrent:
|
Bittorrent:
|
||||||
- Changed the torrent generator behaviour from trying only the exact path
|
- Changed the torrent generator behaviour from trying only the exact path
|
||||||
to the file given to trying all paths given by removing the root of the
|
to the file given to trying all paths given by removing the root of the
|
||||||
|
@ -9307,8 +9307,8 @@ Janus 8 Oct 2007
|
||||||
|
|
||||||
html/bt/
|
html/bt/
|
||||||
torrent_cache.php
|
torrent_cache.php
|
||||||
database/
|
database/
|
||||||
bittorrent_peers.sql
|
bittorrent_peers.sql
|
||||||
|
|
||||||
Rom 8 Oct 2007
|
Rom 8 Oct 2007
|
||||||
- MGR: User errors are supposed to be red, not internal errors.
|
- MGR: User errors are supposed to be red, not internal errors.
|
||||||
|
@ -9411,9 +9411,9 @@ Janus 10 Oct 2007
|
||||||
|
|
||||||
html/bt
|
html/bt
|
||||||
announce.php
|
announce.php
|
||||||
scrape.php
|
scrape.php
|
||||||
inc/
|
inc/
|
||||||
bittorrent_ipbans.sql (new)
|
bittorrent_ipbans.sql (new)
|
||||||
|
|
||||||
Charlie 10 Oct 2007
|
Charlie 10 Oct 2007
|
||||||
- Mac V5 GFX API: In setMacPList(), if resource already exists, don't
|
- Mac V5 GFX API: In setMacPList(), if resource already exists, don't
|
||||||
|
@ -9450,7 +9450,7 @@ Eric K. 11 Oct 2007
|
||||||
|
|
||||||
html/
|
html/
|
||||||
user/
|
user/
|
||||||
create_profile.php
|
create_profile.php
|
||||||
|
|
||||||
Charlie 11 Oct 2007
|
Charlie 11 Oct 2007
|
||||||
- V6 GFX: Call waitpid to prevent gfx_switcher leaving zombie processes.
|
- V6 GFX: Call waitpid to prevent gfx_switcher leaving zombie processes.
|
||||||
|
@ -9617,26 +9617,26 @@ Charlie 16 Oct 2007
|
||||||
boinc_api.C
|
boinc_api.C
|
||||||
|
|
||||||
David 17 Oct 2007
|
David 17 Oct 2007
|
||||||
- client: improve log messages
|
- client: improve log messages
|
||||||
|
|
||||||
client/
|
client/
|
||||||
cs_scheduler.C
|
cs_scheduler.C
|
||||||
pers_file_xfer.C
|
pers_file_xfer.C
|
||||||
scheduler_op.C
|
scheduler_op.C
|
||||||
clienttray/
|
clienttray/
|
||||||
tray_win.cpp
|
tray_win.cpp
|
||||||
|
|
||||||
Charlie 18 Oct 2007
|
Charlie 18 Oct 2007
|
||||||
- Fix compiler warning,
|
- Fix compiler warning,
|
||||||
|
|
||||||
client/
|
client/
|
||||||
cs_scheduler.C
|
cs_scheduler.C
|
||||||
|
|
||||||
David 18 Oct 2007
|
David 18 Oct 2007
|
||||||
- client (win): fix time-zone code
|
- client (win): fix time-zone code
|
||||||
|
|
||||||
client/
|
client/
|
||||||
hostinfo_win.C
|
hostinfo_win.C
|
||||||
|
|
||||||
Rom 18 Oct 2007
|
Rom 18 Oct 2007
|
||||||
- Add the Global prefix to the shared memory segment that
|
- Add the Global prefix to the shared memory segment that
|
||||||
|
@ -9700,12 +9700,12 @@ Eric K 19 Oct 2007
|
||||||
|
|
||||||
|
|
||||||
David 20 Oct 2007
|
David 20 Oct 2007
|
||||||
- client: cc_config.xml can contain one or more <alt_platform> elements
|
- client: cc_config.xml can contain one or more <alt_platform> elements
|
||||||
specifying additional alternate platforms.
|
specifying additional alternate platforms.
|
||||||
|
|
||||||
client/
|
client/
|
||||||
cs_platforms.C
|
cs_platforms.C
|
||||||
log_flags.C,h
|
log_flags.C,h
|
||||||
|
|
||||||
Reinhard 21 Oct 2007
|
Reinhard 21 Oct 2007
|
||||||
- configure.ac: fixed handling of curl-libs to avoid erroneous
|
- configure.ac: fixed handling of curl-libs to avoid erroneous
|
||||||
|
@ -9749,30 +9749,30 @@ Rytis 22 Oct 2007
|
||||||
stats.php
|
stats.php
|
||||||
|
|
||||||
David 22 Oct 2007
|
David 22 Oct 2007
|
||||||
- API: some changes relevant only to SETI@home.
|
- API: some changes relevant only to SETI@home.
|
||||||
|
|
||||||
api/
|
api/
|
||||||
graphics2.h
|
graphics2.h
|
||||||
reduce.h
|
reduce.h
|
||||||
reduce_lib.C
|
reduce_lib.C
|
||||||
reduce_main.C
|
reduce_main.C
|
||||||
|
|
||||||
David 22 Oct 2007
|
David 22 Oct 2007
|
||||||
- GUI RPC: fix format of <auth2> request
|
- GUI RPC: fix format of <auth2> request
|
||||||
- GUI RPC: don't enable network on bad request
|
- GUI RPC: don't enable network on bad request
|
||||||
|
|
||||||
client/
|
client/
|
||||||
gui_rpc_server_ops.C
|
gui_rpc_server_ops.C
|
||||||
lib/
|
lib/
|
||||||
gui_rpc_client.C
|
gui_rpc_client.C
|
||||||
|
|
||||||
David 22 Oct 2007
|
David 22 Oct 2007
|
||||||
- client: remove unparsed XML error for <active_task_state>
|
- client: remove unparsed XML error for <active_task_state>
|
||||||
- client: remove spurious error if include <alt_platform> in cc_config.xml
|
- client: remove spurious error if include <alt_platform> in cc_config.xml
|
||||||
|
|
||||||
client/
|
client/
|
||||||
app.C
|
app.C
|
||||||
log_flags.C
|
log_flags.C
|
||||||
|
|
||||||
Rom 23 Oct 2007
|
Rom 23 Oct 2007
|
||||||
- client: read_file_string was modified sometime ago to support tail
|
- client: read_file_string was modified sometime ago to support tail
|
||||||
|
@ -9781,3 +9781,27 @@ Rom 23 Oct 2007
|
||||||
|
|
||||||
client/
|
client/
|
||||||
app_control.C
|
app_control.C
|
||||||
|
|
||||||
|
|
||||||
|
David 23 Oct 2007
|
||||||
|
- assimilator: there was a bug in the situation where:
|
||||||
|
1) a WU is marked as ready for assimilation and has no errors;
|
||||||
|
2) it has no canonical result
|
||||||
|
In this case, the assimilate handler gets called anyway,
|
||||||
|
typically with the canonical result of the previous WU as arg.
|
||||||
|
Note: this situation doesn't arise normally;
|
||||||
|
it might happen if some results are deleted accidentally.
|
||||||
|
The fix:
|
||||||
|
- identify this situation, and set the WU.error_mask to a new code
|
||||||
|
(WU_ERROR_NO_CANONICAL_RESULT)
|
||||||
|
- zero out the "canonical_result" variable passed to the handler,
|
||||||
|
so even if the handler fails to check wu.error_mask,
|
||||||
|
at least it won't assimilate the same result twice.
|
||||||
|
Thanks to Hendrik Verhoek for finding this bug.
|
||||||
|
- DB schema: team table type is MyISAM, not InnoDB
|
||||||
|
|
||||||
|
db/
|
||||||
|
boinc_db.h
|
||||||
|
schema.sql
|
||||||
|
sched/
|
||||||
|
assimilator.C
|
||||||
|
|
|
@ -324,6 +324,7 @@ struct HOST {
|
||||||
#define WU_ERROR_TOO_MANY_SUCCESS_RESULTS 4
|
#define WU_ERROR_TOO_MANY_SUCCESS_RESULTS 4
|
||||||
#define WU_ERROR_TOO_MANY_TOTAL_RESULTS 8
|
#define WU_ERROR_TOO_MANY_TOTAL_RESULTS 8
|
||||||
#define WU_ERROR_CANCELLED 16
|
#define WU_ERROR_CANCELLED 16
|
||||||
|
#define WU_ERROR_NO_CANONICAL_RESULT 32
|
||||||
|
|
||||||
struct WORKUNIT {
|
struct WORKUNIT {
|
||||||
int id;
|
int id;
|
||||||
|
|
|
@ -115,7 +115,7 @@ create table team (
|
||||||
ping_user integer not null default 0,
|
ping_user integer not null default 0,
|
||||||
ping_time integer unsigned not null default 0,
|
ping_time integer unsigned not null default 0,
|
||||||
primary key (id)
|
primary key (id)
|
||||||
) type=InnoDB;
|
) type=MyISAM;
|
||||||
|
|
||||||
create table host (
|
create table host (
|
||||||
id integer not null auto_increment,
|
id integer not null auto_increment,
|
||||||
|
|
|
@ -466,14 +466,14 @@ array('boinc_server_status.zip',
|
||||||
);
|
);
|
||||||
|
|
||||||
$web = array(
|
$web = array(
|
||||||
array('boinc_lcs_2.1.tar.gz',
|
array('http://download.conmunix.net/pub/boinc_lcs/boinc_lcs_3.0_beta.tar.gz',
|
||||||
'Boinc LCS',
|
'Boinc LCS',
|
||||||
'',
|
'3.0 beta',
|
||||||
'Live Client State for an unlimited number of clients (needs a webserver)',
|
'Shows the current state and other information from an unlimited number of BOINC clients connected to the Internet.',
|
||||||
'http://conmunich.dyndns.org/cm/development/boinc2/',
|
'http://www.conmunix.net/boinc-lcs',
|
||||||
'Mysql, Perl and PHP',
|
'Apache, PHP',
|
||||||
'Shows the current status from up to 4 clients on a webserver. Files will be transported by a small Perl server within the network that runs on each client. You can configure all options over a Mysql backend.',
|
'Boinc LCS is a free PHP based script, that allows you to monitor the current state (and other information) from each of your connected BOINC clients. It runs on a simple webserver and since version 2.1 it is also platform independent. Boinc LCS is released under the GNU/GPL license. You can modify and redistribute or just using it!',
|
||||||
'1139033692'
|
'1193023938'
|
||||||
),
|
),
|
||||||
array('boincphpgui-2.3.tar.gz',
|
array('boincphpgui-2.3.tar.gz',
|
||||||
'BoincPHP5-GUI',
|
'BoincPHP5-GUI',
|
||||||
|
|
|
@ -2,6 +2,19 @@
|
||||||
|
|
||||||
$project_news = array(
|
$project_news = array(
|
||||||
|
|
||||||
|
array("October 22, 2007",
|
||||||
|
"The BOINC-based <a href=http://www.bbc.co.uk/sn/climateexperiment>BBC
|
||||||
|
Climate Change Experiment</a> has won the prestigious
|
||||||
|
<a href=http://www.prix-europa.de/>Prix Europa</a>
|
||||||
|
award in the Internet category."
|
||||||
|
),
|
||||||
|
array("October 21, 2007",
|
||||||
|
'Conmunix has released version 3.0 beta of
|
||||||
|
<a href=http://www.conmunix.net/boinc-lcs>Boinc LCS</a>
|
||||||
|
(Live Client State), a PHP script that allows you to monitor
|
||||||
|
the current state and other information from each of
|
||||||
|
your BOINC clients.'
|
||||||
|
),
|
||||||
array("October 18, 2007",
|
array("October 18, 2007",
|
||||||
"BOINC user John Koulouris has written <a href=http://www.angelfire.com/jkoulouris-boinc/>The Big BOINC! Projects and Chronology Page</a>,
|
"BOINC user John Koulouris has written <a href=http://www.angelfire.com/jkoulouris-boinc/>The Big BOINC! Projects and Chronology Page</a>,
|
||||||
a brief history of BOINC."
|
a brief history of BOINC."
|
||||||
|
|
|
@ -98,15 +98,35 @@ bool do_pass(APP& app) {
|
||||||
);
|
);
|
||||||
|
|
||||||
sprintf(buf, "where workunitid=%d", wu.id);
|
sprintf(buf, "where workunitid=%d", wu.id);
|
||||||
|
canonical_result.clear();
|
||||||
|
bool found = false;
|
||||||
while (!result.enumerate(buf)) {
|
while (!result.enumerate(buf)) {
|
||||||
results.push_back(result);
|
results.push_back(result);
|
||||||
if (result.id == wu.canonical_resultid) {
|
if (result.id == wu.canonical_resultid) {
|
||||||
canonical_result = result;
|
canonical_result = result;
|
||||||
|
found = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If no canonical result found and WU had no other errors,
|
||||||
|
// something is wrong, e.g. result records got deleted prematurely.
|
||||||
|
// This is probably unrecoverable, so mark the WU as having
|
||||||
|
// an assimilation error and keep going.
|
||||||
|
//
|
||||||
|
if (!found && !wu.error_mask) {
|
||||||
|
log_messages.printf(SCHED_MSG_LOG::MSG_CRITICAL,
|
||||||
|
"[%s] no canonical result\n", wu.name
|
||||||
|
);
|
||||||
|
wu.error_mask = WU_ERROR_NO_CANONICAL_RESULT;
|
||||||
|
sprintf(buf, "error_mask=%d", wu.error_mask);
|
||||||
|
wu.update_field(buf);
|
||||||
|
}
|
||||||
|
|
||||||
retval = assimilate_handler(wu, results, canonical_result);
|
retval = assimilate_handler(wu, results, canonical_result);
|
||||||
if (retval) {
|
if (retval) {
|
||||||
|
// If handler failed, there's probably a volume offline
|
||||||
|
// or something like that. Better to quit.
|
||||||
|
//
|
||||||
log_messages.printf(SCHED_MSG_LOG::MSG_CRITICAL,
|
log_messages.printf(SCHED_MSG_LOG::MSG_CRITICAL,
|
||||||
"[%s] handler returned error %d; exiting\n", wu.name, retval
|
"[%s] handler returned error %d; exiting\n", wu.name, retval
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in New Issue