- client: it's possible for a host to get app versions for

a given app that have different platforms and different version #s.
    The client was erroneously deleting the one w/ the lower version
    when it was no longer in use.
    Fix: in garbage collection, consider one version to supercede another
    only if they have the same platform


svn path=/trunk/boinc/; revision=25770
This commit is contained in:
David Anderson 2012-06-18 17:57:33 +00:00
parent 250017e1f9
commit 5e87181d81
3 changed files with 23 additions and 4 deletions

View File

@ -4372,3 +4372,16 @@ Charlie 18 June 2012
mac_installer/
PostInstall.cpp
Uninstall.cpp
David 18 June 2012
- client: it's possible for a host to get app versions for
a given app that have different platforms and different version #s.
The client was erroneously deleting the one w/ the lower version
when it was no longer in use.
Fix: in garbage collection, consider one version to supercede another
only if they have the same platform
client/
client_state.cpp
vda/
ssim.cpp

View File

@ -1415,7 +1415,8 @@ bool CLIENT_STATE::garbage_collect_always() {
// go through APP_VERSIONs;
// delete any not referenced by any WORKUNIT
// and superceded by a more recent version.
// and superceded by a more recent version
// for the same platform and plan class
//
avp_iter = app_versions.begin();
while (avp_iter != app_versions.end()) {
@ -1425,8 +1426,9 @@ bool CLIENT_STATE::garbage_collect_always() {
for (j=0; j<app_versions.size(); j++) {
avp2 = app_versions[j];
if (avp2->app == avp->app
&& (!strcmp(avp2->plan_class, avp->plan_class))
&& avp2->version_num > avp->version_num
&& (!strcmp(avp2->plan_class, avp->plan_class))
&& (!strcmp(avp2->platform, avp->platform))
) {
found = true;
break;

View File

@ -477,11 +477,15 @@ int main(int argc, char** argv) {
// default policy
//
policy.replication = 2;
policy.coding_levels = 1;
policy.coding_levels = 2;
policy.codings[0].n = 10;
policy.codings[0].k = 6;
policy.codings[0].m = 16;
policy.codings[0].n_upload = 12;
policy.codings[1].n = 10;
policy.codings[1].k = 6;
policy.codings[1].m = 16;
policy.codings[1].n_upload = 12;
for (int i=1; i<argc; i++) {
if (!strcmp(argv[i], "--policy")) {