From: Eric Blake <eblake@redhat.com>
To: John Snow <jsnow@redhat.com>, qemu-devel@nongnu.org
Cc: erik.rull@rdsoftware.de, paulo.vital@profitbricks.com,
lcapitulino@redhat.com
Subject: Re: [Qemu-devel] [PATCH] qmp: Give saner messages related to qmp_capabilities misuse
Date: Wed, 15 Apr 2015 12:31:57 -0600 [thread overview]
Message-ID: <552EAE9D.90703@redhat.com> (raw)
In-Reply-To: <552EAA42.9020400@redhat.com>
[-- Attachment #1: Type: text/plain, Size: 2045 bytes --]
On 04/15/2015 12:13 PM, John Snow wrote:
>
>
> On 04/15/2015 11:19 AM, Eric Blake wrote:
>> Pretending that QMP doesn't understand a command merely because
>> we are not in the right mode doesn't help first-time users figure
>> out what to do to correct things. Although the documentation for
>> QMP calls out capabilities negotiation, we should also make it
>> clear in our error messages what we were expecting. With this
>> patch, I now get the following transcript:
>>
>> $ ./x86_64-softmmu/qemu-system-x86_64 -qmp stdio -nodefaults
>> {"QMP": {"version": {"qemu": {"micro": 93, "minor": 2, "major": 2},
>> "package": ""}, "capabilities": []}}
>> {"execute":"huh"}
>> {"error": {"class": "CommandNotFound", "desc": "The command huh has
>> not been found"}}
>> {"execute":"quit"}
>> {"error": {"class": "CommandNotFound", "desc": "Expecting capabilities
>> negotiation with 'qmp_capabilities' before command 'quit'"}}
>
> Any particular reason why we should keep the "CommandNotFound" error
> class here? Backwards compat? Inertia?
>
>> {"execute":"qmp_capabilities"}
>> {"return": {}}
>> {"execute":"qmp_capabilities"}
>> {"error": {"class": "CommandNotFound", "desc": "Capabilities
>> negotiation is already complete, command 'qmp_capabilities' ignored"}}
>
> Same here.
Backwards compat. I can't prove that anyone else was relying on specific
classes (in particular, although it is unlikely that anyone was issuing
qmp_capabilities more than once, or cares what error class was returned,
it IS a useful test for probing if the connection is in capability
negotiation mode when reconnecting to a monitor after a libvirtd
restart). It's better to be conservative and avoid changing the error
class (which must be reliable to machine readers) and only impact the
error message (which is human readable and is documented to not be
machine parseable, so we can change that at will).
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]
next prev parent reply other threads:[~2015-04-15 18:32 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-15 15:19 [Qemu-devel] [PATCH] qmp: Give saner messages related to qmp_capabilities misuse Eric Blake
2015-04-15 16:07 ` Kashyap Chamarthy
2015-04-15 16:30 ` Paulo Ricardo Paz Vital
2015-04-15 18:13 ` John Snow
2015-04-15 18:31 ` Eric Blake [this message]
2015-04-15 18:33 ` John Snow
2015-04-21 14:09 ` Luiz Capitulino
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=552EAE9D.90703@redhat.com \
--to=eblake@redhat.com \
--cc=erik.rull@rdsoftware.de \
--cc=jsnow@redhat.com \
--cc=lcapitulino@redhat.com \
--cc=paulo.vital@profitbricks.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).