From 631ba60ef220be0574017d4b4ea23a39323759a6 Mon Sep 17 00:00:00 2001 From: Fiona Ebner Date: Thu, 17 Nov 2022 15:00:12 +0100 Subject: [PATCH] manager: avoid scoring nodes if maintenance fallback node is valid With the Usage::Static plugin, scoring is not as cheap anymore and select_service_node() is called for each running service. Signed-off-by: Fiona Ebner --- src/PVE/HA/Manager.pm | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/PVE/HA/Manager.pm b/src/PVE/HA/Manager.pm index 7f1d1d7..cc2ada4 100644 --- a/src/PVE/HA/Manager.pm +++ b/src/PVE/HA/Manager.pm @@ -149,25 +149,20 @@ sub select_service_node { } } + return $maintenance_fallback + if defined($maintenance_fallback) && $pri_groups->{$top_pri}->{$maintenance_fallback}; + my $scores = $online_node_usage->score_nodes_to_start_service($sid, $current_node); my @nodes = sort { $scores->{$a} <=> $scores->{$b} || $a cmp $b } keys %{$pri_groups->{$top_pri}}; my $found; - my $found_maintenance_fallback; for (my $i = scalar(@nodes) - 1; $i >= 0; $i--) { my $node = $nodes[$i]; if ($node eq $current_node) { $found = $i; } - if (defined($maintenance_fallback) && $node eq $maintenance_fallback) { - $found_maintenance_fallback = $i; - } - } - - if (defined($found_maintenance_fallback)) { - return $nodes[$found_maintenance_fallback]; } if ($try_next) { -- 2.39.2