From 08b01a59010d27dbdf402a2e0eb43aa0e655f3fc Mon Sep 17 00:00:00 2001 From: Chris Behrens Date: Wed, 25 Apr 2012 17:34:53 +0000 Subject: [PATCH] Don't leak RPC connections on timeouts or other exceptions Fixes bug 968843 Change-Id: I9e0f1e306cab203bf4c865050b7a45f96127062e --- nova/rpc/amqp.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/nova/rpc/amqp.py b/nova/rpc/amqp.py index cfa4ad1c..ac29a625 100644 --- a/nova/rpc/amqp.py +++ b/nova/rpc/amqp.py @@ -38,6 +38,7 @@ from nova import flags from nova import log as logging from nova.openstack.common import local import nova.rpc.common as rpc_common +from nova import utils LOG = logging.getLogger(__name__) @@ -293,7 +294,11 @@ class MulticallWaiter(object): if self._done: raise StopIteration while True: - self._iterator.next() + try: + self._iterator.next() + except Exception: + with utils.save_and_reraise_exception(): + self.done() if self._got_ending: self.done() raise StopIteration