diff mbox series

[2/4] python/qmp: remove Server.wait_closed() call for Python 3.12

Message ID 20231006195243.3131140-3-jsnow@redhat.com (mailing list archive)
State New, archived
Headers show
Series Python: Enable python3.12 support | expand

Commit Message

John Snow Oct. 6, 2023, 7:52 p.m. UTC
This patch is a backport from
https://gitlab.com/qemu-project/python-qemu-qmp/-/commit/e03a3334b6a477beb09b293708632f2c06fe9f61

According to Guido in https://github.com/python/cpython/issues/104344 ,
this call was never meant to wait for the server to shut down - that is
handled synchronously - but instead, this waits for all connections to
close. Or, it would have, if it wasn't broken since it was introduced.

3.12 fixes the bug, which now causes a hang in our code. The fix is just
to remove the wait.

Signed-off-by: John Snow <jsnow@redhat.com>
---
 python/qemu/qmp/protocol.py | 1 -
 1 file changed, 1 deletion(-)

Comments

Vladimir Sementsov-Ogievskiy Oct. 6, 2023, 8:35 p.m. UTC | #1
On 06.10.23 22:52, John Snow wrote:
> This patch is a backport from
> https://gitlab.com/qemu-project/python-qemu-qmp/-/commit/e03a3334b6a477beb09b293708632f2c06fe9f61
> 
> According to Guido in https://github.com/python/cpython/issues/104344 ,
> this call was never meant to wait for the server to shut down - that is
> handled synchronously - but instead, this waits for all connections to
> close. Or, it would have, if it wasn't broken since it was introduced.
> 
> 3.12 fixes the bug, which now causes a hang in our code. The fix is just
> to remove the wait.
> 
> Signed-off-by: John Snow <jsnow@redhat.com>

Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
diff mbox series

Patch

diff --git a/python/qemu/qmp/protocol.py b/python/qemu/qmp/protocol.py
index 753182131f..a4ffdfad51 100644
--- a/python/qemu/qmp/protocol.py
+++ b/python/qemu/qmp/protocol.py
@@ -495,7 +495,6 @@  async def _stop_server(self) -> None:
         try:
             self.logger.debug("Stopping server.")
             self._server.close()
-            await self._server.wait_closed()
             self.logger.debug("Server stopped.")
         finally:
             self._server = None