[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v5 00/12] python/machine.py: refactor shutdown
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [PATCH v5 00/12] python/machine.py: refactor shutdown |
Date: |
Tue, 14 Jul 2020 21:17:35 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.5.0 |
On 7/10/20 7:06 AM, John Snow wrote:
> v5: More or less rewritten.
>
> This series is motivated by a desire to move python/qemu onto a strict
> mypy/pylint regime to help prevent regressions in the python codebase.
>
> 1. Remove the "bare except" pattern in the existing shutdown code, which
> can mask problems and make debugging difficult.
>
> 2. Ensure that post-shutdown cleanup is always performed, even when
> graceful termination fails.
>
> 3. Unify cleanup paths such that no matter how the VM is terminated, the
> same functions and steps are always taken to reset the object state.
>
> 4. Rewrite shutdown() such that any error encountered when attempting a
> graceful shutdown will be raised as an AbnormalShutdown exception.
> The pythonic idiom is to allow the caller to decide if this is a
> problem or not.
>
> Previous versions of this series did not engage the fourth goal, and ran
> into race conditions. When I was trying to allow shutdown to succeed if
> QEMU was already closed, it became impossible to tell in which cases
> QEMU not being present was "OK" and in which cases it was evidence of a
> problem.
>
> This refactoring is even more explicit. If a graceful shutdown is
> requested and cannot be performed, an exception /will/ be raised.
>
> In cases where the test writer expects QEMU to already have exited,
> vm.wait() should be used in preference to vm.shutdown(). In cases where
> a graceful shutdown is not interesting or necessary to the test,
> vm.kill() should be used.
>
> John Snow (12):
> python/machine.py: consolidate _post_shutdown()
> python/machine.py: Close QMP socket in cleanup
> python/machine.py: Add _early_cleanup hook
> python/machine.py: Perform early cleanup for wait() calls, too
> python/machine.py: Prohibit multiple shutdown() calls
> python/machine.py: Add a configurable timeout to shutdown()
> python/machine.py: Make wait() call shutdown()
> tests/acceptance: wait() instead of shutdown() where appropriate
> tests/acceptance: Don't test reboot on cubieboard
> python/machine.py: split shutdown into hard and soft flavors
> python/machine.py: re-add sigkill warning suppression
> python/machine.py: change default wait timeout to 3 seconds
Series (finally) queued on python-next, thanks.
- Re: [PATCH v5 10/12] python/machine.py: split shutdown into hard and soft flavors, (continued)
[PATCH v5 12/12] python/machine.py: change default wait timeout to 3 seconds, John Snow, 2020/07/10
[PATCH v5 11/12] python/machine.py: re-add sigkill warning suppression, John Snow, 2020/07/10
Re: [PATCH v5 00/12] python/machine.py: refactor shutdown,
Philippe Mathieu-Daudé <=