[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Re: [PATCH] [XEN-API] Not raising an API error in VTPM destroy method

On Thu, Feb 08, 2007 at 01:25:23PM -0500, Stefan Berger wrote:

> xen-devel-bounces@xxxxxxxxxxxxxxxxxxx wrote on 02/08/2007 10:53:24 AM:
> > On Wed, Feb 07, 2007 at 06:37:19PM -0500, Stefan Berger wrote:
> >
> > > Don't return an API error if vTPM cannot be destroyed due to a running
> > > VM, but a value indicating failure instead. Adapt python code, libxen
> > > and documentation.
> > >
> > > Signed-off-by: Stefan Berger <stefanb@xxxxxxxxxx>
> >
> > We have a separate error-returning mechanism -- you should be using that
> > rather than returning an error code.  Take a look at the end of
> > xenapi-datamodel.tex; the error code definitions are there.  In
> XendAPI.py,
> > you have xen_api_error available, which will marshall an error code and
> > arguments, and in xen/xm/messages there is a translation database for
> those
> > error messages.
> Thanks for pointing this out. I looked at the xenapi-datamodel.tex, of
> course, but I mostly find information related to the errors in 1.3.1 and
> towards the end of the document there's the debug class, but I don't think
> you are referring to that one.

No, I mean the version that's in xen-unstable.  There's section 2.24 on error
handling in there.

> The reason why I am actually trying to get rid of the 'return
> xen_api_error(...)' statement is that if I am using the C client library
> ,libxen, the session->ok parameter changes to 'false' if this error comes
> back when for example trying to delete a vTPM from a running VM. I have
> tried to make the session usable again by doing 'session->ok = true'  so I
> don't have to establish yet another session -- not sure whether that is an
> allowed usage model of the session, though. Although this session works
> for further transactions the program fails at the point when the session
> is cleaned up with glibc complaining about bad memory. So the easiest way
> to circumvent this is to have the API return an error code for failure of
> the operation using xen_api_success().

That might be the easiest way, but it's certainly the wrong one!

This has been discussed a little on the xen-api list before, though I agree
that the documentation needs to be updated.  Setting session->ok back to true
when you've handled the error is fine.  The intention is to allow you to chain
together short groups of calls, and then check for errors at appropriate
points.  (If you prefer, you can check for errors after every single call,
that's fine too.)

If you're getting a segfault or a glibc-detected error, then that's clearly a
bug.  Could you post your code so that I can try it?


Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.