- scheduler: moved client version check to be last of the checks

performed for a particular app version. It is not necessary
        to tell the user to upgrade the client just to suite the needs of
        a particular app version if this app version requires resources
        that the host dosn't have or didn't request work for.

        Actually I don't think it's good to tell the user he needs to
        upgrade the client if there is only one particular app version
        that requires a more recent one than he has. I think that the
        purpose of the g_wreq->outdated_client flag was checking the                                                                                                                                     
        min_core_version in the project configuration. For this the                                                                                                                                      
        flag and the notice/message that it triggers is still ok. But                                                                                                                                    
        in the app version checks setting this flag leads to misleading                                                                                                                                  
        messages in most cases, so I commented that out for now.

        I'm not sure, though, that both of these measurements are needed.

svn path=/trunk/boinc/; revision=25742
This commit is contained in:
Bernd Machenschalk 2012-06-06 09:11:41 +00:00
parent c94ca443c1
commit ac24fafb4c
2 changed files with 45 additions and 19 deletions

View File

@ -4196,3 +4196,24 @@ David 5 June 2012
sched/ sched/
plan_class_spec.cpp plan_class_spec.cpp
plan_class_spec.xml.sample plan_class_spec.xml.sample
Bernd 6 Jun 2012
- scheduler: moved client version check to be last of the checks
performed for a particular app version. It is not necessary
to tell the user to upgrade the client just to suite the needs of
a particular app version if this app version requires resources
that the host dosn't have or didn't request work for.
Actually I don't think it's good to tell the user he needs to
upgrade the client if there is only one particular app version
that requires a more recent one than he has. I think that the
purpose of the g_wreq->outdated_client flag was checking the
min_core_version in the project configuration. For this the
flag and the notice/message that it triggers is still ok. But
in the app version checks setting this flag leads to misleading
messages in most cases, so I commented that out for now.
I'm not sure, though, that both of these measurements are needed.
sched/
sched_version.cpp

View File

@ -687,25 +687,6 @@ BEST_APP_VERSION* get_app_version(
if (av.appid != wu.appid) continue; if (av.appid != wu.appid) continue;
if (av.platformid != p->id) continue; if (av.platformid != p->id) continue;
if (g_request->core_client_version < av.min_core_version) {
if (config.debug_version_select) {
log_messages.printf(MSG_NORMAL,
"[version] [AV#%d] client version %d < min core version %d\n",
av.id, g_request->core_client_version, av.min_core_version
);
}
g_wreq->outdated_client = true;
continue;
}
if (av.max_core_version && g_request->core_client_version > av.max_core_version) {
if (config.debug_version_select) {
log_messages.printf(MSG_NORMAL,
"[version] [AV#%d] client version %d > max core version %d\n",
av.id, g_request->core_client_version, av.max_core_version
);
}
continue;
}
if (strlen(av.plan_class)) { if (strlen(av.plan_class)) {
if (!app_plan(*g_request, av.plan_class, host_usage)) { if (!app_plan(*g_request, av.plan_class, host_usage)) {
if (config.debug_version_select) { if (config.debug_version_select) {
@ -801,6 +782,30 @@ BEST_APP_VERSION* get_app_version(
continue; continue;
} }
// skip versions which require a newer core client
//
if (g_request->core_client_version < av.min_core_version) {
if (config.debug_version_select) {
log_messages.printf(MSG_NORMAL,
"[version] [AV#%d] client version %d < min core version %d\n",
av.id, g_request->core_client_version, av.min_core_version
);
}
// Do not tell the user he needs to update the client
// just because the client is too old for a particular app version
// g_wreq->outdated_client = true;
continue;
}
if (av.max_core_version && g_request->core_client_version > av.max_core_version) {
if (config.debug_version_select) {
log_messages.printf(MSG_NORMAL,
"[version] [AV#%d] client version %d > max core version %d\n",
av.id, g_request->core_client_version, av.max_core_version
);
}
continue;
}
// at this point we know the version is feasible, // at this point we know the version is feasible,
// so if config.prefer_primary_platform is set // so if config.prefer_primary_platform is set
// we won't look any further. // we won't look any further.