All of lore.kernel.org
 help / color / mirror / Atom feed
From: John Snow <jsnow@redhat.com>
To: Hanna Reitz <hreitz@redhat.com>
Cc: Kevin Wolf <kwolf@redhat.com>,
	Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>,
	Eduardo Habkost <ehabkost@redhat.com>,
	qemu-block@nongnu.org, qemu-devel <qemu-devel@nongnu.org>,
	Cleber Rosa <crosa@redhat.com>
Subject: Re: [PATCH 04/15] python/qmp: clear events on get_events() call
Date: Fri, 17 Sep 2021 13:31:25 -0400	[thread overview]
Message-ID: <CAFn=p-YEVMwY=j4Ts-C8gLzRynTQXeRNySjYheYAKTOHXAVuig@mail.gmail.com> (raw)
In-Reply-To: <bc3f4366-6fa9-750d-3e33-ac8c3deaad2b@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 2799 bytes --]

On Fri, Sep 17, 2021 at 8:51 AM Hanna Reitz <hreitz@redhat.com> wrote:

> On 17.09.21 07:40, John Snow wrote:
> > All callers in the tree *already* clear the events after a call to
> > get_events(). Do it automatically instead and update callsites to remove
> > the manual clear call.
> >
> > These semantics are quite a bit easier to emulate with async QMP, and
> > nobody appears to be abusing some emergent properties of what happens if
> > you decide not to clear them, so let's dial down to the dumber, simpler
> > thing.
> >
> > Specifically: callers of clear() right after a call to get_events() are
> > more likely expressing their desire to not see any events they just
> > retrieved, whereas callers of clear_events() not in relation to a recent
> > call to pull_event/get_events are likely expressing their desire to
> > simply drop *all* pending events straight onto the floor. In the sync
> > world, this is safe enough; in the async world it's nearly impossible to
> > promise that nothing happens between getting and clearing the
> > events.
> >
> > Making the retrieval also clear the queue is vastly simpler.
> >
> > Signed-off-by: John Snow <jsnow@redhat.com>
> > ---
> >   python/qemu/machine/machine.py | 1 -
> >   python/qemu/qmp/__init__.py    | 4 +++-
> >   python/qemu/qmp/qmp_shell.py   | 1 -
> >   3 files changed, 3 insertions(+), 3 deletions(-)
>
> [...]
>
> > diff --git a/python/qemu/qmp/__init__.py b/python/qemu/qmp/__init__.py
> > index 269516a79b..ba15668c25 100644
> > --- a/python/qemu/qmp/__init__.py
> > +++ b/python/qemu/qmp/__init__.py
> > @@ -374,7 +374,9 @@ def get_events(self, wait: bool = False) ->
> List[QMPMessage]:
> >           @return The list of available QMP events.
> >           """
> >           self.__get_events(wait)
> > -        return self.__events
> > +        events = self.__events
> > +        self.__events = []
> > +        return events
>
> Maybe it’s worth updating the doc string that right now just says “Get a
> list of available QMP events”?
>
>
Yes, that's an oversight on my part. I'm updating it to:
"Get a list of available QMP events and clear the list of pending events."
and adding your RB.

(Also, perhaps renaming it to get_new_events, but that’s an even weaker
> suggestion.)
>

I tried to avoid churn in the iotests as much as I could manage, so I think
I will leave this be for now. I have an impression that the number of cases
where one might wish to see events that have already been witnessed is
actually quite low, so I am not sure that it needs disambiguation from a
case that is essentially never used. (I have certainly been wrong before,
though.)


> Anyway:
>
> Reviewed-by: Hanna Reitz <hreitz@redhat.com>
>
>
~ thankyou ~

[-- Attachment #2: Type: text/html, Size: 3913 bytes --]

  reply	other threads:[~2021-09-17 17:33 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-17  5:40 [PATCH 00/15] Switch iotests to using Async QMP John Snow
2021-09-17  5:40 ` [PATCH 01/15] python/aqmp: add greeting property to QMPClient John Snow
2021-09-17 12:20   ` Hanna Reitz
2021-09-17  5:40 ` [PATCH 02/15] python/aqmp: add .empty() method to EventListener John Snow
2021-09-17 12:25   ` Hanna Reitz
2021-09-17  5:40 ` [PATCH 03/15] python/aqmp: Return cleared events from EventListener.clear() John Snow
2021-09-17 12:36   ` Hanna Reitz
2021-09-17 17:19     ` John Snow
2021-10-04  9:03       ` Hanna Reitz
2021-09-17  5:40 ` [PATCH 04/15] python/qmp: clear events on get_events() call John Snow
2021-09-17 12:51   ` Hanna Reitz
2021-09-17 17:31     ` John Snow [this message]
2021-09-17  5:40 ` [PATCH 05/15] python/qmp: add send_fd_scm directly to QEMUMonitorProtocol John Snow
2021-09-17 13:21   ` Hanna Reitz
2021-09-17 17:36     ` John Snow
2021-09-17  5:40 ` [PATCH 06/15] python, iotests: remove socket_scm_helper John Snow
2021-09-17 13:24   ` Hanna Reitz
2021-09-17  5:40 ` [PATCH 07/15] python/aqmp: add send_fd_scm John Snow
2021-09-17 13:34   ` Hanna Reitz
2021-09-17 18:05     ` John Snow
2021-09-17  5:40 ` [PATCH 08/15] python/aqmp: Create MessageModel and StandaloneModel classes John Snow
2021-09-17 13:39   ` Hanna Reitz
2021-09-17 19:21     ` John Snow
2021-09-17  5:40 ` [PATCH 09/15] python/machine: remove has_quit argument John Snow
2021-09-17 13:59   ` Hanna Reitz
2021-09-17 23:12     ` John Snow
2021-09-17  5:40 ` [PATCH 10/15] python/machine: Add support for AQMP backend John Snow
2021-09-17 14:16   ` Hanna Reitz
2021-09-17 23:48     ` John Snow
2021-10-04  9:43       ` Hanna Reitz
2021-09-17  5:40 ` [PATCH 11/15] python/aqmp: Create sync QMP wrapper for iotests John Snow
2021-09-17 14:23   ` Hanna Reitz
2021-09-18  0:01     ` John Snow
2021-09-17  5:40 ` [PATCH 12/15] iotests: Disable AQMP logging under non-debug modes John Snow
2021-09-17 14:30   ` Hanna Reitz
2021-09-18  0:58     ` John Snow
2021-09-18  2:14       ` John Snow
2021-10-04 10:12         ` Hanna Reitz
2021-10-04 18:32           ` John Snow
2021-10-04 21:26             ` John Snow
2021-10-05 15:12             ` Hanna Reitz
2021-10-04  9:52       ` Hanna Reitz
2021-09-17  5:40 ` [PATCH 13/15] iotests: Accommodate async QMP Exception classes John Snow
2021-09-17 14:35   ` Hanna Reitz
2021-09-18  1:12     ` John Snow
2021-09-17  5:40 ` [PATCH 14/15] python/aqmp: Remove scary message John Snow
2021-09-17 14:38   ` Hanna Reitz
2021-09-17 15:15     ` John Snow
2021-09-17  5:40 ` [PATCH 15/15] python, iotests: replace qmp with aqmp John Snow
2021-09-17 14:40   ` Hanna Reitz
2021-09-17 14:55     ` 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='CAFn=p-YEVMwY=j4Ts-C8gLzRynTQXeRNySjYheYAKTOHXAVuig@mail.gmail.com' \
    --to=jsnow@redhat.com \
    --cc=crosa@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=hreitz@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=vsementsov@virtuozzo.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.