On Wed, Sep 03, 2025 at 01:11:18AM -0400, John Snow wrote: > This commit is two backports squashed into one to avoid regressions. > > python: *really* remove get_event_loop > > A prior commit, aa1ff990, switched away from using get_event_loop *by > default*, but this is not good enough to avoid deprecation warnings as > `asyncio.get_event_loop_policy().get_event_loop()` is *also* > deprecated. Replace this mechanism with explicit calls to > asyncio.get_new_loop() and revise the cleanup mechanisms in __del__ to > match. > > python: avoid creating additional event loops per thread > > "Too hasty by far!", commit 21ce2ee4 attempted to avoid deprecated > behavior altogether by calling new_event_loop() directly if there was no > loop currently running, but this has the unfortunate side effect of > potentially creating multiple event loops per thread if tests > instantiate multiple QMP connections in a single thread. This behavior > is apparently not well-defined and causes problems in some, but not all, > combinations of Python interpreter version and platform environment. > > Partially revert to Daniel Berrange's original patch, which calls > get_event_loop and simply suppresses the deprecation warning in > Python<=3.13. This time, however, additionally register new loops > created with new_event_loop() so that future calls to get_event_loop() > will return the loop already created. > > Reported-by: Richard W.M. Jones <[email protected]> > Reported-by: Daniel P. Berrangé <[email protected]> > Signed-off-by: John Snow <[email protected]> > cherry picked from commit 21ce2ee4f2df87efe84a27b9c5112487f4670622 > cherry picked from commit c08fb82b38212956ccffc03fc6d015c3979f42fe > Signed-off-by: John Snow <[email protected]> > --- > python/qemu/qmp/legacy.py | 46 +++++++++++++++++++++++--------------- > python/qemu/qmp/qmp_tui.py | 10 ++------- > python/qemu/qmp/util.py | 27 ++++++++++++++++++++++ > 3 files changed, 57 insertions(+), 26 deletions(-)
Reviewed-by: Daniel P. Berrangé <[email protected]> With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
