From ac24fafb4c2f0f60abda4e2fdf7aff0216db87d6 Mon Sep 17 00:00:00 2001 From: Bernd Machenschalk Date: Wed, 6 Jun 2012 09:11:41 +0000 Subject: [PATCH] - 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 --- checkin_notes | 21 ++++++++++++++++++++ sched/sched_version.cpp | 43 +++++++++++++++++++++++------------------ 2 files changed, 45 insertions(+), 19 deletions(-) diff --git a/checkin_notes b/checkin_notes index d79c410047..68e42b6b75 100644 --- a/checkin_notes +++ b/checkin_notes @@ -4196,3 +4196,24 @@ David 5 June 2012 sched/ plan_class_spec.cpp 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 diff --git a/sched/sched_version.cpp b/sched/sched_version.cpp index b3aa594a66..bfaf43c644 100644 --- a/sched/sched_version.cpp +++ b/sched/sched_version.cpp @@ -687,25 +687,6 @@ BEST_APP_VERSION* get_app_version( if (av.appid != wu.appid) 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 (!app_plan(*g_request, av.plan_class, host_usage)) { if (config.debug_version_select) { @@ -801,6 +782,30 @@ BEST_APP_VERSION* get_app_version( 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, // so if config.prefer_primary_platform is set // we won't look any further.