[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