I've not seen this patch appear in xen-unstable. Any chance that it can make
it into Xen 3.0.3 release. Its a really triival 1-liner which significantly
improves error handling when talking to XenD.
Regards,
Dan.
On Tue, Aug 29, 2006 at 06:12:22PM +0100, Daniel P. Berrange wrote:
> In the XenD code which deals with dispatching of requests (SrvBase.py) the
> dispatch process is obviously wrapped in a try/except block. Unfortunately
> in the except block, the HTTP error code is never updated to indicate a
> failure
> condition.
>
> So, for example, if you try to create a domain requesting 3 GB of memory,
> and Dom0 fails to balloon, XenD will happily still return 'HTTP 202 OK'
> even though the domain creation failed. This leaves apps talking to XenD
> no way to discover that there was a failure in the create operation, other
> than telling the user to look in /var/log/xend.log where the details are
> logged.
>
> The attached patch sets the HTTP return code to '500 Internal Error' when
> a request throws an exception. This lets client detect & report the failure
> of domain creation immediately, improving the end user experiance
>
> As an example user interaction with current behaviour. libvirt is told by
> XenD that domain creation succeeded, so it goes onto to wait for devices
> where upon its told there is no such domain:
>
> Starting install...
> libvir: Xen Daemon error : POST operation failed: No such domain demo12
> Failed to get devices for domain demo12
>
> With the attached patch applied, the initial domain creation failure can
> be detected & reported immediately:
>
> Starting install...
> libvir: Xen Daemon error : POST operation failed: (xend.err 'Error creating
> domain: The privileged domain did not balloon!')
> Failed to create domain demo12
>
>
> Signed-off by: Daniel P. Berrange <berrange@xxxxxxxxxx>
>
>
> Regards,
> Dan.
> --
> |=- Red Hat, Engineering, Emerging Technologies, Boston. +1 978 392 2496 -=|
> |=- Perl modules: http://search.cpan.org/~danberr/ -=|
> |=- Projects: http://freshmeat.net/~danielpb/ -=|
> |=- GnuPG: 7D3B9505 F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 -=|
> diff -r 68a1b61ecd28 tools/python/xen/web/SrvBase.py
> --- a/tools/python/xen/web/SrvBase.py Mon Aug 28 13:08:41 2006 +0100
> +++ b/tools/python/xen/web/SrvBase.py Tue Aug 29 12:54:28 2006 -0400
> @@ -84,6 +84,7 @@ class SrvBase(resource.Resource):
> try:
> return op_method(op, req)
> except Exception, exn:
> + req.setResponseCode(http.INTERNAL_SERVER_ERROR, "Request
> failed: " + op)
> log.exception("Request %s failed.", op)
> if req.useSxp():
> return ['xend.err', str(exn)]
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel
--
|=- Red Hat, Engineering, Emerging Technologies, Boston. +1 978 392 2496 -=|
|=- Perl modules: http://search.cpan.org/~danberr/ -=|
|=- Projects: http://freshmeat.net/~danielpb/ -=|
|=- GnuPG: 7D3B9505 F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 -=|
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|