From: Anthony Liguori <aliguori@linux.vnet.ibm.com>
To: Luiz Capitulino <lcapitulino@redhat.com>
Cc: Markus Armbruster <armbru@redhat.com>, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 05/18] Monitor: Drop is_async_return()
Date: Wed, 29 Sep 2010 10:11:08 -0500 [thread overview]
Message-ID: <4CA3570C.3080000@linux.vnet.ibm.com> (raw)
In-Reply-To: <20100929102821.6b80eac4@doriath>
On 09/29/2010 08:28 AM, Luiz Capitulino wrote:
> On Wed, 29 Sep 2010 13:21:08 +0200
> Markus Armbruster<armbru@redhat.com> wrote:
>
>
>> Luiz Capitulino<lcapitulino@redhat.com> writes:
>>
>>
>>> If I understood it correcty, the is_async_return() logic was only
>>> used to prevent QMP from issuing duplicated success responses
>>> for asynchronous handlers.
>>>
>>> However, QMP doesn't use do_info() anymore so this is dead logic
>>> and (hopefully) can be safely dropped.
>>>
>> Looks like it.
>>
>> Does anybody understand this async monitor stuff?
>>
> I guess I do, but every now and then it surprises me someway.
>
>
>> It's used only for
>> "info balloon" and "balloon". It keeps getting in the way. I'm sorely
>> tempted to rip it out and reimplement it after we're done refactoring
>> the monitor.
>>
> I've considered doing that, but then I realized that it's actually a good
> interface with two serious problems:
>
> 1. It's half done. A true async interface would provide a way to list and
> cancel requests (at the API level and in QMP/HMP)
>
> 2. It got too complex, and that's so because of the current state of the
> Monitor code
>
> My optimistic side is telling me that both problems can be solved during
> the refactoring process: Monitor code will be simplified and the current
> async interface could be used as the basis for the internal QMP API (which
> should be async-only, but that's another discussion).
>
I think one of the ugly bits of QMP as a protocol is capabilities
negotiation because it implies that QMP has stateful sessions.
Capabilities doesn't have to imply a stateful session but some of the
things we've discussed in the past would (like event notification masking).
When you look at other RPCs like XML-RPC, REST, or even JSON-RPC over
HTTP, in order to be used over HTTP it's important that the actual RPC
session has no state because HTTP is stateless.
The reason this discussion matters is because today we have a Monitor
object that all commands operate on and could potentially use to store
state.
An alternative model would be to do away with the Monitor object used by
the commands which means the commands have no way to store session
state. The human monitor needs state because it's stateful but it's not
clear that we need to do this with QMP.
I think the vast majority of the complexity of async is based on the
fact that we have a session object and we make the session object
globally available. I don't think this is really something we've ever
considered with QMP though.
Regards,
Anthony Liguori
Regards,
Anthony Liguori
next prev parent reply other threads:[~2010-09-29 15:11 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-16 20:20 [Qemu-devel] [PATCH 00/18] Monitor: split HMP and QMP dispatch tables Luiz Capitulino
2010-09-16 20:20 ` [Qemu-devel] [PATCH 01/18] Monitor: Introduce find_dispatch_table() Luiz Capitulino
2010-09-29 9:29 ` Markus Armbruster
2010-09-16 20:20 ` [Qemu-devel] [PATCH 02/18] QMP: handle_qmp_command(): Move 'cmd' sanity check Luiz Capitulino
2010-09-16 20:20 ` [Qemu-devel] [PATCH 03/18] QMP: Don't use do_info() Luiz Capitulino
2010-09-29 11:13 ` Markus Armbruster
2010-09-16 20:20 ` [Qemu-devel] [PATCH 04/18] Monitor: Drop QMP bits from do_info() Luiz Capitulino
2010-09-16 20:20 ` [Qemu-devel] [PATCH 05/18] Monitor: Drop is_async_return() Luiz Capitulino
2010-09-29 11:21 ` Markus Armbruster
2010-09-29 13:28 ` Luiz Capitulino
2010-09-29 15:11 ` Anthony Liguori [this message]
2010-09-29 15:11 ` Anthony Liguori
2010-09-16 20:20 ` [Qemu-devel] [PATCH 06/18] Monitor: Convert do_info() back to HMP Luiz Capitulino
2010-09-16 20:20 ` [Qemu-devel] [PATCH 07/18] Monitor: Introduce the qemu-monitor-qmp.hx file Luiz Capitulino
2010-09-16 20:20 ` [Qemu-devel] [PATCH 08/18] QMP: Introduce qmp_find_cmd() Luiz Capitulino
2010-09-16 20:20 ` [Qemu-devel] [PATCH 09/18] QMP: Introduce command dispatch table Luiz Capitulino
2010-09-29 11:31 ` Markus Armbruster
2010-09-29 13:47 ` Luiz Capitulino
2010-09-29 14:23 ` Markus Armbruster
2010-09-16 20:20 ` [Qemu-devel] [PATCH 10/18] QMP: Introduce query commands " Luiz Capitulino
2010-09-16 20:20 ` [Qemu-devel] [PATCH 11/18] QMP: Simplify do_info_commands() Luiz Capitulino
2010-09-16 20:20 ` [Qemu-devel] [PATCH 12/18] QMP: Small cleanup in handle_qmp_command() Luiz Capitulino
2010-09-16 20:20 ` [Qemu-devel] [PATCH 13/18] Monitor: Drop QMP info from the qemu-monitor.hx file Luiz Capitulino
2010-09-16 20:21 ` [Qemu-devel] [PATCH 14/18] Monitor: Drop monitor_cmd_user_only() Luiz Capitulino
2010-09-16 20:21 ` [Qemu-devel] [PATCH 15/18] Monitor: Rename monitor_handler_ported() Luiz Capitulino
2010-09-16 20:21 ` [Qemu-devel] [PATCH 16/18] Monitor: Rename monitor_handler_is_async() Luiz Capitulino
2010-09-16 20:21 ` [Qemu-devel] [PATCH 17/18] Monitor: Directly call QObject handlers Luiz Capitulino
2010-09-16 20:21 ` [Qemu-devel] [PATCH 18/18] QMP: Introduce qmp_call_cmd() Luiz Capitulino
2010-09-21 12:56 ` [Qemu-devel] [PATCH 00/18] Monitor: split HMP and QMP dispatch tables Anthony Liguori
2010-09-29 11:41 ` Markus Armbruster
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=4CA3570C.3080000@linux.vnet.ibm.com \
--to=aliguori@linux.vnet.ibm.com \
--cc=armbru@redhat.com \
--cc=lcapitulino@redhat.com \
--cc=qemu-devel@nongnu.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).