]> git.proxmox.com Git - qemu-server.git/commitdiff
migrate: tolerate query-migrate errors
authorDietmar Maurer <dietmar@proxmox.com>
Thu, 30 Aug 2012 07:28:24 +0000 (09:28 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Thu, 30 Aug 2012 07:28:24 +0000 (09:28 +0200)
PVE/QemuMigrate.pm

index 335bb326bcab42da88f0af8b4632561efec0b113..0ad0eab4a26a5067712865831ccc84ce578858fe 100644 (file)
@@ -348,15 +348,28 @@ sub phase2 {
     my $lstat = 0;
     my $usleep = 2000000;
     my $i = 0;
+    my $err_count = 0;
     while (1) {
        $i++;
        my $avglstat = $lstat/$i if $lstat;
 
-       usleep ($usleep);
-       my $stat = PVE::QemuServer::vm_mon_cmd_nocheck($vmid, "query-migrate");
+       usleep($usleep);
+       my $stat;
+       eval {
+           $stat = PVE::QemuServer::vm_mon_cmd_nocheck($vmid, "query-migrate");
+       };
+       if (my $err = $@) {
+           $err_count++;
+           warn "query migrate failed: $err\n";
+           if ($err_count <= 5) {
+               usleep(1000000);
+               next;
+           }
+           die "too many query migrate failures - aborting\n";
+       }
        if ($stat->{status} =~ m/^(active|completed|failed|cancelled)$/im) {
            $merr = undef;
-
+           $err_count = 0;
            if ($stat->{status} eq 'completed') {
                my $delay = time() - $start;
                if ($delay > 0) {