[pve-devel] [PATCH ha-manager v2 17/18] manager: group migration: sync active service counting with lrm's helper
Daniel Kral
d.kral at proxmox.com
Tue Sep 9 10:33:54 CEST 2025
There are some inconsistencies between the HA group migration's
is_lrm_active_or_idle helper's and the LRM's active_service_count(...)
helper's counting of active services. Sync these by:
- Counting a migrating service as active on both the source and target
node's LRM as has been introduced in commit a94a38f9 ("LRM: count
incoming migrations towards a nodes active resources").
- Not counting services as active if these are in error or request_start
state as has been introduced in commit 38545741 ("LRM: do not count
erroneous service as active") and commit 4931b586 ("manager: add new
intermediate state for stop->start transitions") respectively.
- Removing the `sort` as sorting the services is not required for
counting active services.
Signed-off-by: Daniel Kral <d.kral at proxmox.com>
---
changes since v1:
- remove sort as it's not needed
src/PVE/HA/Manager.pm | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/PVE/HA/Manager.pm b/src/PVE/HA/Manager.pm
index 2e67c646..4cdddb55 100644
--- a/src/PVE/HA/Manager.pm
+++ b/src/PVE/HA/Manager.pm
@@ -542,13 +542,16 @@ my $is_lrm_active_or_idle = sub {
my ($ss, $node, $lrm_state) = @_;
my $active_count = 0;
- for my $sid (sort keys %$ss) {
+ for my $sid (keys %$ss) {
my $sd = $ss->{$sid};
- next if $sd->{node} ne $node;
+ my $target = $sd->{target}; # count as active if we are the target.
+ next if (!$sd->{node} || $sd->{node} ne $node) && (!$target || $target ne $node);
my $req_state = $sd->{state};
next if !defined($req_state);
next if $req_state eq 'stopped';
next if $req_state eq 'freeze';
+ next if $req_state eq 'error';
+ next if $req_state eq 'request_start';
$active_count++;
}
--
2.47.3
More information about the pve-devel
mailing list