From 7dcb1a093f4f83996a559a66d637e31b573e69c5 Mon Sep 17 00:00:00 2001 From: Armando Migliaccio Date: Fri, 6 Jan 2012 18:40:49 +0000 Subject: [PATCH] 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 --- nova/rpc/impl_kombu.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nova/rpc/impl_kombu.py b/nova/rpc/impl_kombu.py index 82eb651d..9ed1e4e6 100644 --- a/nova/rpc/impl_kombu.py +++ b/nova/rpc/impl_kombu.py @@ -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):