xci: scripts: vm: Retry when timer expires 85/50985/1
authorMarkos Chandras <mchandras@suse.de>
Tue, 23 Jan 2018 10:25:12 +0000 (10:25 +0000)
committerMarkos Chandras <mchandras@suse.de>
Tue, 23 Jan 2018 10:25:12 +0000 (10:25 +0000)
We should look again for active package managers when the timer expires
to avoid locking issues.

Change-Id: I88f0299a87befce17d11ba7581f0330979a25345
Signed-off-by: Markos Chandras <mchandras@suse.de>
xci/scripts/vm/start-new-vm.sh

index 0af2a35..3048d1b 100755 (executable)
@@ -112,15 +112,6 @@ if ! sudo -n "true"; then
        exit 1
 fi
 
-# Wait 30-120 seconds so we avoid running multiple instances of pkg manager. Of course
-# this will not work as it should if there is an external process running a package
-# manager instance. However, since this script is only being execute on CI nodes which
-# we have complete control it should be mostly fine.
-backoff_time=0
-while [[ ${backoff_time} -le 30 ]]; do
-       backoff_time=$(( $RANDOM % 120 ))
-done
-
 case ${ID,,} in
        *suse)
                pkg_mgr_cmd="sudo zypper -q -n install virt-manager qemu-kvm qemu-tools libvirt-daemon docker libvirt-client libvirt-daemon-driver-qemu iptables ebtables dnsmasq"
@@ -133,9 +124,10 @@ case ${ID,,} in
                ;;
 esac
 
-if pgrep -fa "${pkg_mgr_cmd%*install*}" 2>&1; then
-       sleep ${backoff_time}
-fi
+while true; do
+       pgrep -fa "${pkg_mgr_cmd%*install*}" 2>&1 && sleep 60 || break
+done
+
 eval ${pkg_mgr_cmd}
 
 echo "Ensuring libvirt and docker services are running..."