summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-06-14 22:02:05 +0000
committerGerrit Code Review <review@openstack.org>2012-06-14 22:02:05 +0000
commit76636056d29b87f8bac95ca302621d9158d615e4 (patch)
treeddec3867ed657b88e66928ca1c2faacf58c1d89b
parent7097e01a15ecd5c28b6b771e5043f18da243607e (diff)
parentd15f3034dfab05ef0ec02b4e353b3dfa1512db35 (diff)
Merge "Add missing ack to impl_qpid."
-rw-r--r--nova/rpc/impl_qpid.py7
-rw-r--r--nova/tests/rpc/test_qpid.py4
2 files changed, 10 insertions, 1 deletions
diff --git a/nova/rpc/impl_qpid.py b/nova/rpc/impl_qpid.py
index 4044ec03a..c5ab4a1d5 100644
--- a/nova/rpc/impl_qpid.py
+++ b/nova/rpc/impl_qpid.py
@@ -137,7 +137,12 @@ class ConsumerBase(object):
def consume(self):
"""Fetch the message and pass it to the callback object"""
message = self.receiver.fetch()
- self.callback(message.content)
+ try:
+ self.callback(message.content)
+ except Exception:
+ LOG.exception(_("Failed to process message... skipping it."))
+ finally:
+ self.session.acknowledge(message)
def get_receiver(self):
return self.receiver
diff --git a/nova/tests/rpc/test_qpid.py b/nova/tests/rpc/test_qpid.py
index 1b21158f8..b8553873b 100644
--- a/nova/tests/rpc/test_qpid.py
+++ b/nova/tests/rpc/test_qpid.py
@@ -296,6 +296,7 @@ class RpcQpidTestCase(test.TestCase):
self.mock_receiver)
self.mock_receiver.fetch().AndReturn(qpid.messaging.Message(
{"result": "foo", "failure": False, "ending": False}))
+ self.mock_session.acknowledge(mox.IgnoreArg())
if multi:
self.mock_session.next_receiver(timeout=mox.IsA(int)).AndReturn(
self.mock_receiver)
@@ -303,16 +304,19 @@ class RpcQpidTestCase(test.TestCase):
qpid.messaging.Message(
{"result": "bar", "failure": False,
"ending": False}))
+ self.mock_session.acknowledge(mox.IgnoreArg())
self.mock_session.next_receiver(timeout=mox.IsA(int)).AndReturn(
self.mock_receiver)
self.mock_receiver.fetch().AndReturn(
qpid.messaging.Message(
{"result": "baz", "failure": False,
"ending": False}))
+ self.mock_session.acknowledge(mox.IgnoreArg())
self.mock_session.next_receiver(timeout=mox.IsA(int)).AndReturn(
self.mock_receiver)
self.mock_receiver.fetch().AndReturn(qpid.messaging.Message(
{"failure": False, "ending": True}))
+ self.mock_session.acknowledge(mox.IgnoreArg())
self.mock_session.close()
self.mock_connection.session().AndReturn(self.mock_session)