[pve-devel] [PATCH ha-manager 1/2] fix #4984: recompute online usage: add service usage to migration target only if online

Fiona Ebner f.ebner at proxmox.com
Thu Oct 5 16:05:45 CEST 2023

Otherwise, when using the 'basic' plugin, this would lead to
autovivification 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

Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
 src/PVE/HA/Manager.pm | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/PVE/HA/Manager.pm b/src/PVE/HA/Manager.pm
index 6a13360..d983672 100644
--- a/src/PVE/HA/Manager.pm
+++ b/src/PVE/HA/Manager.pm
@@ -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 {

More information about the pve-devel mailing list