From e908a57f07c8906a0dee7424dbcd2557c4f29ddb Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Tue, 7 Jan 2014 10:41:04 +0100 Subject: [PATCH] ocf agent: retry get_vmlist if we get an empty list Make HA more stable if pmxcfs is not reachable for a short period (for example if you restart the service). Some users reported they get empty VM list when there is very high load on a server. --- bin/ocf/pvevm | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/bin/ocf/pvevm b/bin/ocf/pvevm index 79b8eb43..ab108cae 100755 --- a/bin/ocf/pvevm +++ b/bin/ocf/pvevm @@ -115,8 +115,20 @@ sub validate_all { die "no VMID specified\n" if !defined($vmid); die "got invalid VMID '$vmid'\n" if $vmid !~ m/^[1-9]\d*$/; - my $vmlist = PVE::Cluster::get_vmlist(); + my $vmlist; + for (my $i = 0; $i < 10; $i++) { + $vmlist = PVE::Cluster::get_vmlist(); + if (!$vmlist || !$vmlist->{ids}) { + warn "got empty cluster VM list - try again in 2 seconds\n"; + sleep(2); + PVE::Cluster::cfs_update(); + } else { + last; + } + } + die "got empty cluster VM list\n" if !$vmlist || !$vmlist->{ids}; + my $data = $vmlist->{ids}->{$vmid}; die "VM $vmid does not exist\n" if !$data;