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

Re: [Xen-devel] xmlrpclib.ProtocolError: <ProtocolError for /RPC2: -1 >



On Tue, Aug 08, 2006 at 08:24:03PM -0500, Hollis Blanchard wrote:

> I'm getting this error when trying to create a domain:
> 
> Unexpected error: xmlrpclib.ProtocolError
> 
> Please report to xen-devel@xxxxxxxxxxxxxxxxxxx
> Traceback (most recent call last):
>   File "/usr/sbin/xm", line 10, in ?
>     main.main(sys.argv)
>   File "/usr/lib/python/xen/xm/main.py", line 1233, in main
>     rc = cmd(args)
>   File "<string>", line 1, in <lambda>
>   File "/usr/lib/python/xen/xm/main.py", line 598, in xm_subcommand
>     cmd.main([command] + args)
>   File "/usr/lib/python/xen/xm/create.py", line 1124, in main
>     dom = make_domain(opts, config)
>   File "/usr/lib/python/xen/xm/create.py", line 931, in make_domain
>     raise ex
> xmlrpclib.ProtocolError: <ProtocolError for /RPC2: -1 >
> 
> First I would like to propose this patch, which keeps the full traceback
> intact:
> diff -r 0ec0cb99f712 tools/python/xen/xm/create.py
> --- a/tools/python/xen/xm/create.py     Tue Aug 08 18:58:53 2006 -0500
> +++ b/tools/python/xen/xm/create.py     Tue Aug 08 19:29:25 2006 -0500
> @@ -928,7 +928,7 @@ def make_domain(opts, config):
>          import signal
>          if vncpid:
>              os.kill(vncpid, signal.SIGKILL)
> -        raise ex
> +        raise
> 
>      dom = sxp.child_value(dominfo, 'name')

Yes, I'll drop that in.

> Here's the full traceback:
> Unexpected error: xmlrpclib.ProtocolError
> 
> Please report to xen-devel@xxxxxxxxxxxxxxxxxxx
> Traceback (most recent call last):
>   File "/usr/sbin/xm", line 10, in ?
>     main.main(sys.argv)
>   File "/usr/lib/python/xen/xm/main.py", line 1233, in main
>     rc = cmd(args)
>   File "<string>", line 1, in <lambda>
>   File "/usr/lib/python/xen/xm/main.py", line 598, in xm_subcommand
>     cmd.main([command] + args)
>   File "/usr/lib/python/xen/xm/create.py", line 1124, in main
>     dom = make_domain(opts, config)
>   File "/usr/lib/python/xen/xm/create.py", line 913, in make_domain
>     dominfo = server.xend.domain.create(config)
>   File "/usr/lib/python2.3/xmlrpclib.py", line 1032, in __call__
>     return self.__send(self.__name, args)
>   File "/usr/lib/python/xen/util/xmlrpclib2.py", line 121, in __request
>     response = xmlrpclib.ServerProxy.__request(self, methodname, params)
>   File "/usr/lib/python2.3/xmlrpclib.py", line 1319, in __request
>     verbose=self.__verbose
>   File "/usr/lib/python/xen/util/xmlrpclib2.py", line 86, in request
>     return Transport.request(self, host, '/RPC2', request_body, verbose)
>   File "/usr/lib/python2.3/xmlrpclib.py", line 1073, in request
>     headers
> xmlrpclib.ProtocolError: <ProtocolError for /RPC2: -1 >
> 
> It looks like the problem is that I've done something in C to crash the
> python interpreter for Xend, or at least this message
> in /var/log/xend.log is my only clue:
> 
> [2006-08-08 21:14:48 xend 1153] CRITICAL (SrvDaemon:195) Xend died due
> to signal 9!  Restarting it.

Yes, you've probably had one thread segfault; after that, the underlying
threading implementation sends SIGKILL to all the other threads, hence the
signal 9 appearing here.

> Could we get a little better error-handling here? I don't know what the
> right way is to detect that the other end of the XMLRPC connection has
> gone away.

I've put a catch into main.py for xmlrpclib.ProtocolError, which at least will
be a bit prettier.  In the longer term, we might want to consider some retry
behaviour, but that can come later.

Ewan.

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

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