[libvirt] [PATCH] Improve error reporting in virsh
Daniel P. Berrange
berrange at redhat.com
Thu Feb 5 20:20:28 UTC 2009
On Thu, Feb 05, 2009 at 11:28:48AM -0800, john.levon at sun.com wrote:
> # HG changeset patch
> # User john.levon at sun.com
> # Date 1233859425 28800
> # Node ID c594c1c54b88947082a01b6aaa81ad7756bbd951
> # Parent a23da778e0ddf954d8bf0a185b508fc236feb4be
> Improve error reporting in virsh
>
> Rather than verbosely printing every error, save the last error and
> report that only if the entire command fails.
> +/*
> + * Report an error when a command finishes. This is better than before
> + * (when correct operation would report errors), but it has some
> + * problems: we lose the smarter formatting of virDefaultErrorFunc(),
> + * and it can become harder to debug problems, if errors get reported
> + * twice during one command. This case shouldn't really happen anyway,
> + * and it's IMHO a bug that libvirt does that sometimes.
> + */
> +static void
> +virshReportError(vshControl *ctl)
> +{
> + if (last_error == NULL)
> + return;
> +
> + if (last_error->code == VIR_ERR_OK) {
> + vshError(ctl, FALSE, "%s", _("unknown error"));
> + goto out;
> + }
> +
> + vshError(ctl, FALSE, "%s", last_error->message);
> +
> +out:
> + free(last_error);
> + last_error = NULL;
> }
This actually still leaks the char * strings associated with the
error - we probably need to now add a virErrorFree() function to
go along with the new virSaveError function.
Daniel
--
|: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|
More information about the libvir-list
mailing list