]> xenbits.xensource.com Git - libvirt.git/commitdiff
tools: do not loop in libvirt-guests test_connect
authorChristian Ehrhardt <christian.ehrhardt@canonical.com>
Mon, 16 Dec 2019 07:20:59 +0000 (08:20 +0100)
committerDaniel P. Berrangé <berrange@redhat.com>
Mon, 16 Dec 2019 10:10:49 +0000 (10:10 +0000)
These days libvirt is pretty reliable and even remote connections
(not the default for libvirt-guests anyway) either work or fail but are
uncommon to be flaky.

On the other hand users might have disabled the service and while we are
After=libvirtd for ordering we are not Requiring it. Adding that or any
harder dependency might break our ordering. But if people have disabled
libvirt they will do a full retry loop until timeout.

Lets drop the loop to be much faster if a remote is not reachable.

Fixes: https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/1854653
This reverts

  commit 4e7fc8305a53676ba2362bfaa8ca05c4851b7e12
  Author: Michal Prívozník <mprivozn@redhat.com>
  Date:   Fri Feb 21 12:46:08 2014 +0100

    libvirt-guests: Wait for libvirtd to initialize

The race described in that commit no longer exists using systemd as
we now have socket activation. If not using systemd, then it is also
safe if using the libvirtd --daemon flag, since the parent process
won't return to the caller until the child is accepting connections.

Reported-by: Doug Smythies <dsmythies@telus.net>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
tools/libvirt-guests.sh.in

index 4bc6e866f0ad9ce0b95bfb1ee2d87542e3a2a1ba..a881f6266ea4545ccbb017beac88d6e51b80fa24 100644 (file)
@@ -37,8 +37,6 @@ SHUTDOWN_TIMEOUT=300
 PARALLEL_SHUTDOWN=0
 START_DELAY=0
 BYPASS_CACHE=0
-CONNECT_RETRIES=10
-RETRIES_SLEEP=1
 SYNC_TIME=0
 
 test -f "$sysconfdir"/sysconfig/libvirt-guests &&
@@ -90,19 +88,12 @@ test_connect()
 {
     uri=$1
 
-    i=${CONNECT_RETRIES}
-    while [ $i -gt 0 ]; do
-        run_virsh "$uri" connect 2>/dev/null
-        if [ $? -eq 0 ]; then
-            return 0;
-        fi
-        sleep ${RETRIES_SLEEP}
-        eval_gettext "Unable to connect to libvirt currently. Retrying .. \$i"
-        i=$(($i-1))
-    done
-    eval_gettext "Can't connect to \$uri. Skipping."
-    echo
-    return 1
+    if run_virsh "$uri" connect 2>/dev/null; then
+        return 0;
+    else
+        eval_gettext "Can't connect to \$uri. Skipping."
+        return 1
+    fi
 }
 
 # list_guests URI PERSISTENT