Bug #894683: nova.service does not handle attribute specific exceptions and client hangs

As Sateesh points out nova.service.Service.__getattr__ throws an AttributeError exception when the upcall method is not available.

However nova.rpc should catch all exceptions. This does not happen in this specific case because the following statement was outside the try-catch-all:

node_func = getattr(self.proxy, str(method))

Change-Id: I437c88783bca037e4054078d2687ef41c8fc2b83
This commit is contained in:
Armando Migliaccio
2012-01-06 18:40:49 +00:00
parent d92f0e37e2
commit 7dcb1a093f

View File

@@ -642,10 +642,10 @@ class ProxyCallback(object):
object and calls it.
"""
node_func = getattr(self.proxy, str(method))
node_args = dict((str(k), v) for k, v in args.iteritems())
# NOTE(vish): magic is fun!
try:
node_func = getattr(self.proxy, str(method))
node_args = dict((str(k), v) for k, v in args.iteritems())
# NOTE(vish): magic is fun!
rval = node_func(context=ctxt, **node_args)
# Check if the result was a generator
if inspect.isgenerator(rval):