[libvirt] [PATCH] Unify most error reporting (ver 2)

Daniel P. Berrange berrange at redhat.com
Fri Oct 10 09:51:56 UTC 2008


On Fri, Oct 10, 2008 at 11:47:49AM +0200, Jim Meyering wrote:
> Daniel Veillard <veillard at redhat.com> wrote:
> 
> > On Thu, Oct 09, 2008 at 11:44:02AM -0400, Cole Robinson wrote:
> >> Daniel Veillard wrote:
> >> > On Wed, Oct 08, 2008 at 08:35:38PM +0100, Daniel P. Berrange wrote:
> >
> >   Hum, this breaks "make check"
> >
> > PASS: read-non-seekable
> > --- out 2008-10-10 10:23:57.000000000 +0200
> > +++ exp 2008-10-10 10:23:57.000000000 +0200
> > @@ -1,2 +1,2 @@
> > -libvir: Test error : internal error Domain is still running
> > +libvir: Test error test: internal error Domain is still running
> >  error: Failed to undefine domain test
> >  FAIL: undefine
> >
> > Seems we loose the domain name in the error message when trying to
> > undefine a running domain:
> >
> > paphio:~/libvirt/tests -> /usr/bin/virsh -q -c test:///default undefine
> > test
> > libvir: Test error test: internal error Domain is still running
> > error: Failed to undefine domain test
> > paphio:~/libvirt/tests -> ../src/virsh -q -c test:///default undefine
> > test
> > libvir: Test error : internal error Domain is still running
> > error: Failed to undefine domain test
> > paphio:~/libvirt/tests ->
> >
> > I should be possible to restore the old behaviour of reporting the domain
> > name there
> 
> The documentation suggests that the new interface was initially
> supposed to have dom and net parameters:

We removed them because they're deprecated and 90% of the driver code 
never provides them - the test driver was the exception to the rule here

> 
> /**
>  * __virReportErrorHelper
>  *
>  * @conn: the connection to the hypervisor if available
>  * @dom: the domain if available
>  * @net: the network if available
>  * @domcode: the virErrorDomain indicating where it's coming from
> ...
> void __virReportErrorHelper(virConnectPtr conn, int domcode, int errcode,
>                             const char *filename ATTRIBUTE_UNUSED,
>                             const char *funcname ATTRIBUTE_UNUSED,
>                             long long linenr ATTRIBUTE_UNUSED,
>                             const char *fmt, ...)
> {
> ...
>     virerr = __virErrorMsg(errcode, (errorMessage[0] ? errorMessage : NULL));
>     __virRaiseError(conn, NULL, NULL, domcode, errcode, VIR_ERR_ERROR,
>                     virerr, errorMessage, NULL, -1, -1, virerr, errorMessage);
> }
> 
> Shouldn't be hard to make the code agree with the documentation.
> There are fewer than 20 uses of __virReportErrorHelper so far.

That's not really solving the problem because very little code passes
in a non-NULL dom/net parameter.

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