]> git.proxmox.com Git - pve-ha-manager.git/commitdiff
fix spreading out services if source node isnt operational but otherwise ok
authorThomas Lamprecht <t.lamprecht@proxmox.com>
Thu, 21 Jul 2022 16:14:32 +0000 (18:14 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Thu, 21 Jul 2022 16:14:33 +0000 (18:14 +0200)
as its the case for going into maintenance mode

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
src/PVE/HA/Manager.pm
src/test/test-shutdown-policy6/log.expect

index 2deea57769f9aafaf9e4a8ec62fbf940a51e9272..6b5535f41b167efa09fccb29dfdb6c7182bf60c4 100644 (file)
@@ -202,6 +202,13 @@ sub recompute_online_node_usage {
            } else {
                die "should not be reached (sid = '$sid', state = '$state')";
            }
+       } elsif (defined(my $target = $sd->{target})) {
+           if ($state eq 'migrate' || $state eq 'relocate') {
+               # to correctly track maintenance modi and also consider the target as used for the
+               # case a node dies, as we cannot really know if the to-be-aborted incoming migration
+               # has already cleaned up all used resources
+               $online_node_usage->{$target}++;
+           }
        }
     }
 
index 9d2d7dab8543ea7fb2c3bb7c346186ca944e31a7..1f13552cb829276fa6d17d04e8f9853e4d17ac96 100644 (file)
@@ -35,35 +35,37 @@ info    120    node3/lrm: shutdown LRM, doing maintenance, removing this node fr
 info    120    node1/crm: node 'node3': state changed from 'online' => 'maintenance'
 info    120    node1/crm: migrate service 'vm:103' to node 'node1' (running)
 info    120    node1/crm: service 'vm:103': state changed from 'started' to 'migrate'  (node = node3, target = node1)
-info    120    node1/crm: migrate service 'vm:104' to node 'node1' (running)
-info    120    node1/crm: service 'vm:104': state changed from 'started' to 'migrate'  (node = node3, target = node1)
+info    120    node1/crm: migrate service 'vm:104' to node 'node2' (running)
+info    120    node1/crm: service 'vm:104': state changed from 'started' to 'migrate'  (node = node3, target = node2)
 info    120    node1/crm: migrate service 'vm:105' to node 'node1' (running)
 info    120    node1/crm: service 'vm:105': state changed from 'started' to 'migrate'  (node = node3, target = node1)
-info    120    node1/crm: migrate service 'vm:106' to node 'node1' (running)
-info    120    node1/crm: service 'vm:106': state changed from 'started' to 'migrate'  (node = node3, target = node1)
+info    120    node1/crm: migrate service 'vm:106' to node 'node2' (running)
+info    120    node1/crm: service 'vm:106': state changed from 'started' to 'migrate'  (node = node3, target = node2)
 info    125    node3/lrm: status change active => maintenance
 info    125    node3/lrm: service vm:103 - start migrate to node 'node1'
 info    125    node3/lrm: service vm:103 - end migrate to node 'node1'
-info    125    node3/lrm: service vm:104 - start migrate to node 'node1'
-info    125    node3/lrm: service vm:104 - end migrate to node 'node1'
+info    125    node3/lrm: service vm:104 - start migrate to node 'node2'
+info    125    node3/lrm: service vm:104 - end migrate to node 'node2'
 info    125    node3/lrm: service vm:105 - start migrate to node 'node1'
 info    125    node3/lrm: service vm:105 - end migrate to node 'node1'
-info    125    node3/lrm: service vm:106 - start migrate to node 'node1'
-info    125    node3/lrm: service vm:106 - end migrate to node 'node1'
+info    125    node3/lrm: service vm:106 - start migrate to node 'node2'
+info    125    node3/lrm: service vm:106 - end migrate to node 'node2'
 info    140    node1/crm: service 'vm:103': state changed from 'migrate' to 'started'  (node = node1)
-info    140    node1/crm: service 'vm:104': state changed from 'migrate' to 'started'  (node = node1)
+info    140    node1/crm: service 'vm:104': state changed from 'migrate' to 'started'  (node = node2)
 info    140    node1/crm: service 'vm:105': state changed from 'migrate' to 'started'  (node = node1)
-info    140    node1/crm: service 'vm:106': state changed from 'migrate' to 'started'  (node = node1)
+info    140    node1/crm: service 'vm:106': state changed from 'migrate' to 'started'  (node = node2)
 info    141    node1/lrm: got lock 'ha_agent_node1_lock'
 info    141    node1/lrm: status change wait_for_agent_lock => active
 info    141    node1/lrm: starting service vm:103
 info    141    node1/lrm: service status vm:103 started
-info    141    node1/lrm: starting service vm:104
-info    141    node1/lrm: service status vm:104 started
 info    141    node1/lrm: starting service vm:105
 info    141    node1/lrm: service status vm:105 started
-info    141    node1/lrm: starting service vm:106
-info    141    node1/lrm: service status vm:106 started
+info    143    node2/lrm: got lock 'ha_agent_node2_lock'
+info    143    node2/lrm: status change wait_for_agent_lock => active
+info    143    node2/lrm: starting service vm:104
+info    143    node2/lrm: service status vm:104 started
+info    143    node2/lrm: starting service vm:106
+info    143    node2/lrm: service status vm:106 started
 info    146    node3/lrm: exit (loop end)
 info    146     shutdown: execute crm node3 stop
 info    145    node3/crm: server received shutdown request