On 5/14/20 7:53 AM, John Snow wrote:
> Catch only the timeout error; if there are other problems, allow the
> stack trace to be visible.
>
> Signed-off-by: John Snow <jsnow@redhat.com>
> ---
> python/qemu/lib/machine.py | 33 +++++++++++++++++++++------------
> 1 file changed, 21 insertions(+), 12 deletions(-)
>
> diff --git a/python/qemu/lib/machine.py b/python/qemu/lib/machine.py
> index b9a98e2c86..e3ea523571 100644
> --- a/python/qemu/lib/machine.py
> +++ b/python/qemu/lib/machine.py
> @@ -342,7 +342,26 @@ def wait(self):
> self._load_io_log()
> self._post_shutdown()
>
> - def shutdown(self, has_quit=False):
> + def _issue_shutdown(self, has_quit: bool = False) -> None:
> + """
> + Shutdown the VM.
> + """
> + if not self.is_running():
> + return
> +
> + if self._qmp is not None:
> + if not has_quit:
> + self._qmp.cmd('quit')
> + self._qmp.close()
> +
> + try:
> + self._popen.wait(timeout=3)
> + except subprocess.TimeoutExpired:
> + self._popen.kill()
> +
> + self._popen.wait()
> +
> + def shutdown(self, has_quit: bool = False) -> None:
> """
> Terminate the VM and clean up
> """
> @@ -353,17 +372,7 @@ def shutdown(self, has_quit=False):
> self._console_socket.close()
> self._console_socket = None
>
> - if self.is_running():
> - if self._qmp:
> - try:
> - if not has_quit:
> - self._qmp.cmd('quit')
> - self._qmp.close()
> - self._popen.wait(timeout=3)
> - except:
> - self._popen.kill()
> - self._popen.wait()
> -
> + self._issue_shutdown(has_quit)
> self._load_io_log()
> self._post_shutdown()
>
>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>