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.

Signed-off-by: Daniel Kral <d.k...@proxmox.com>
---
 src/PVE/HA/Manager.pm | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/PVE/HA/Manager.pm b/src/PVE/HA/Manager.pm
index 8d600a7d..0cbeb28d 100644
--- a/src/PVE/HA/Manager.pm
+++ b/src/PVE/HA/Manager.pm
@@ -543,11 +543,14 @@ my $is_lrm_active_or_idle = sub {
     my $active_count = 0;
     for my $sid (sort 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.2



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to