If the user defines a $max_timeout of 30, the service will wait 30 seconds
before it considers lxc-stop complete even though lxc-stop might actually
finish much sooner. This introduces an unneeded delay.
This commit changes the behavior to check once per second to see when lxc-stop
actually stops doing so up to $max_timeout. It also slightly simplifies the
code with logic to append the -t $max_timeout to the script.
Signed-off-by: John Audia <graysky@archlinux.us>
(cherry picked from commit
7984d2d74a2fd83f036310888ad7486bff655c5a)
fi
if [ -n "$name" ]; then
- if [ "$timeout" = "0" ]; then
- /usr/bin/lxc-stop -n "$name" &
- else
- /usr/bin/lxc-stop -n "$name" -t $timeout &
- fi
+ [ "$timeout" = "0" ] && postargs=" -t $max_timeout"
+ /usr/bin/lxc-stop -n "$name" "$postargs" &
+ export STOPPID=$!
fi
}
# ensure e.g. shutdown doesn't occur before maximum timeout on
# containers that are shutting down
if [ $max_timeout -gt 0 ]; then
- sleep $max_timeout
+ for i in $(seq 1 $max_timeout); do
+ if [ -d /proc/"$STOPPID" ]; then
+ sleep 1s
+ else
+ return 0
+ fi
+ done
fi
}