On Wed, Jun 24, 2020 at 10:22:14AM +0200, Markus Armbruster wrote: > Eric Auger <eric.au...@redhat.com> writes: > > > object_property_add() does not allow object_property_try_add() > > to gracefully fail as &error_abort is passed as an error handle. > > > > However such failure can easily be triggered from the QMP shell when, > > for instance, one attempts to create an object with an id that already > > exists: > > > > For instance, call twice: > > object-add qom-type=memory-backend-ram id=mem1 props.size=1073741824 > > and QEMU aborts. > > > > This behavior is undesired as a user/management application mistake > > in reusing a property ID shouldn't result in loss of the VM and live > > data within. > > > > This patch introduces two new functions, object_property_add_err() and > > object_property_add_child_err() whose prototype features an error handle. > > object_property_add_child_err() now gets called from > > user_creatable_add_type. > > This solution was chosen instead of changing the prototype of existing > > functions because the number of existing callers is huge. > > > > The error now is returned gracefully to the QMP client. > > > > (QEMU) object-add qom-type=memory-backend-ram id=mem2 props.size=4294967296 > > {"return": {}} > > (QEMU) object-add qom-type=memory-backend-ram id=mem2 props.size=4294967296 > > {"error": {"class": "GenericError", "desc": "attempt to add duplicate > > property > > 'mem2' to object (type 'container')"}} > > > > Signed-off-by: Eric Auger <eric.au...@redhat.com> > > Recent regression, my fault. Please point that out, and add > > Fixes: d2623129a7dec1d3041ad1221dda1ca49c667532
I noticed tests/qtest/qmp-cmd-test.c exercises object-add. Probably a good idea to extend that to test duplicate ID scenario, as that would have caught the accidental regression. 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 :|