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 <js...@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é <phi...@redhat.com>