All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Daniel P. Berrangé" <berrange@redhat.com>
To: John Snow <jsnow@redhat.com>
Cc: qemu-devel@nongnu.org, qemu-block@nongnu.org,
	Cleber Rosa <crosa@redhat.com>, Hanna Reitz <hreitz@redhat.com>,
	Kevin Wolf <kwolf@redhat.com>,
	"Richard W.M. Jones" <rjones@redhat.com>
Subject: Re: [PATCH v2 12/18] python: backport 'avoid creating additional event loops per thread'
Date: Mon, 8 Sep 2025 17:52:53 +0100	[thread overview]
Message-ID: <aL8J5X86g9ND21-u@redhat.com> (raw)
In-Reply-To: <20250903051125.3020805-13-jsnow@redhat.com>

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 <rjones@redhat.com>
> Reported-by: Daniel P. Berrangé <berrange@redhat.com>
> Signed-off-by: John Snow <jsnow@redhat.com>
> cherry picked from commit 21ce2ee4f2df87efe84a27b9c5112487f4670622
> cherry picked from commit c08fb82b38212956ccffc03fc6d015c3979f42fe
> Signed-off-by: John Snow <jsnow@redhat.com>
> ---
>  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é <berrange@redhat.com>

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 :|



  reply	other threads:[~2025-09-08 16:54 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-03  5:11 [PATCH v2 00/18] python: 3.14 compatibility and python-qemu-qmp synchronization John Snow
2025-09-03  5:11 ` [PATCH v2 01/18] python: backport 'Change error classes to have better repr methods' John Snow
2025-09-08 16:23   ` Daniel P. Berrangé
2025-09-08 17:16     ` John Snow
2025-09-03  5:11 ` [PATCH v2 02/18] python: backport 'EventListener: add __repr__ method' John Snow
2025-09-08 16:24   ` Daniel P. Berrangé
2025-09-03  5:11 ` [PATCH v2 03/18] python: backport 'kick event queue on legacy event_pull()' John Snow
2025-09-08 16:24   ` Daniel P. Berrangé
2025-09-03  5:11 ` [PATCH v2 04/18] python: backport 'protocol: adjust logging name when changing client name' John Snow
2025-09-08 16:25   ` Daniel P. Berrangé
2025-09-03  5:11 ` [PATCH v2 05/18] python: backport 'drop Python3.6 workarounds' John Snow
2025-09-08 16:28   ` Daniel P. Berrangé
2025-09-03  5:11 ` [PATCH v2 06/18] python: backport 'qmp-shell: add common_parser()' John Snow
2025-09-08 16:47   ` Daniel P. Berrangé
2025-09-08 17:39     ` John Snow
2025-09-08 18:16       ` Daniel P. Berrangé
2025-09-03  5:11 ` [PATCH v2 07/18] python: backport 'feat: allow setting read buffer limit' John Snow
2025-09-08 16:49   ` Daniel P. Berrangé
2025-09-03  5:11 ` [PATCH v2 08/18] python: backport 'make require() preserve async-ness' John Snow
2025-09-08 16:50   ` Daniel P. Berrangé
2025-09-03  5:11 ` [PATCH v2 09/18] python: backport 'qmp-shell-wrap: handle missing binary gracefully' John Snow
2025-09-08 16:50   ` Daniel P. Berrangé
2025-09-03  5:11 ` [PATCH v2 10/18] python: backport 'qmp-tui: Do not crash if optional dependencies are not met' John Snow
2025-09-08 16:51   ` Daniel P. Berrangé
2025-09-03  5:11 ` [PATCH v2 11/18] python: backport 'Remove deprecated get_event_loop calls' John Snow
2025-09-08 16:52   ` Daniel P. Berrangé
2025-09-03  5:11 ` [PATCH v2 12/18] python: backport 'avoid creating additional event loops per thread' John Snow
2025-09-08 16:52   ` Daniel P. Berrangé [this message]
2025-09-03  5:11 ` [PATCH v2 13/18] python: synchronize qemu.qmp documentation John Snow
2025-09-08 16:53   ` Daniel P. Berrangé
2025-09-03  5:11 ` [PATCH v2 14/18] iotests: drop compat for old version context manager John Snow
2025-09-03  5:11 ` [PATCH v2 15/18] python: ensure QEMUQtestProtocol closes its socket John Snow
2025-09-03  5:11 ` [PATCH v2 16/18] iotests/147: ensure temporary sockets are closed before exiting John Snow
2025-09-03  5:11 ` [PATCH v2 17/18] iotests/151: ensure subprocesses are cleaned up John Snow
2025-09-03  5:11 ` [PATCH v2 18/18] iotests/check: always enable all python warnings John Snow

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aL8J5X86g9ND21-u@redhat.com \
    --to=berrange@redhat.com \
    --cc=crosa@redhat.com \
    --cc=hreitz@redhat.com \
    --cc=jsnow@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=rjones@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.