The migration process from HA groups to HA rules might require a lot of small updates to individual HA resource configs. These updates have been done per-HA resource, which is quite inefficient and can cause the CRM to fail to update its watchdog in time.
Even though this is a one-off procedure, it is part of the HA Manager state machine and must be done in a single action to prevent reading from an partially updated resource config, i.e., no forking or splitting the task over multiple HA Manager rounds. Therefore use the bulk capability of update_resources_config(...) to remove the group fields and migrate the failback flag for all HA resources in a single read-update-write operation. Signed-off-by: Daniel Kral <[email protected]> --- src/PVE/HA/Manager.pm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/PVE/HA/Manager.pm b/src/PVE/HA/Manager.pm index f55d5870..bf368efd 100644 --- a/src/PVE/HA/Manager.pm +++ b/src/PVE/HA/Manager.pm @@ -579,16 +579,15 @@ my $migrate_group_persistently = sub { $haenv->log('notice', "ha groups migration: migration to rules config successful"); PVE::HA::Groups::migrate_groups_to_resources($groups, $resources); + my $changes = {}; for my $sid (keys %$resources) { # prevent unnecessary updates for HA resources that do not change next if !defined($resources->{$sid}->{group}); - my $changes = {}; $changes->{$sid} = {}; $changes->{$sid}->{failback} = 0 if !$resources->{$sid}->{failback}; - - $haenv->update_service_config($changes, 'group'); } + $haenv->update_service_config($changes, 'group'); $haenv->log('notice', "ha groups migration: migration to resources config successful"); $haenv->delete_group_config(); -- 2.47.3 _______________________________________________ pve-devel mailing list [email protected] https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
