]> git.proxmox.com Git - pve-ha-manager.git/commitdiff
fix #4984: manager: add service to migration-target usage only if online
authorFiona Ebner <f.ebner@proxmox.com>
Thu, 5 Oct 2023 14:05:45 +0000 (16:05 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Fri, 6 Oct 2023 10:22:53 +0000 (12:22 +0200)
Otherwise, when using the 'basic' plugin, this would lead to
auto-vilification of the $target node in the Perl hash tracking the
usage and it would wrongly be considered online when selecting the
recovery node.

The 'static' plugin was not affected, because it would check and warn
before adding usage to a node that was not registered with add_node()
first. Doing the same in the 'basic' plugin will be done by another
patch.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
 [ TL: shorten commit message subject ]
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
src/PVE/HA/Manager.pm

index 6a13360d8012dd57a5936a4b2604a32a3596529f..d983672c417db047da07bef941db19537183d386 100644 (file)
@@ -275,7 +275,8 @@ sub recompute_online_node_usage {
                # count it for both, source and target as load is put on both
                $online_node_usage->add_service_usage_to_node($source, $sid, $source, $target)
                    if $state ne 'request_start_balance';
-               $online_node_usage->add_service_usage_to_node($target, $sid, $source, $target);
+               $online_node_usage->add_service_usage_to_node($target, $sid, $source, $target)
+                   if $online_node_usage->contains_node($target);
            } elsif ($state eq 'stopped' || $state eq 'request_start') {
                # do nothing
            } else {