From 070410f4650f818b3893b0677bbedd0ad8cf8035 Mon Sep 17 00:00:00 2001 From: Joshua McKenty Date: Fri, 16 Jul 2010 14:02:37 -0700 Subject: [PATCH 1/2] Ack messages during call so rabbit leaks less. --- nova/rpc.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/nova/rpc.py b/nova/rpc.py index 72a84b7f..99e820ff 100644 --- a/nova/rpc.py +++ b/nova/rpc.py @@ -197,7 +197,10 @@ def call(topic, msg): conn = Connection.instance() d = defer.Deferred() consumer = DirectConsumer(connection=conn, msg_id=msg_id) - consumer.register_callback(lambda data, message: d.callback(data)) + def deferred_receive(data, message): + message.ack() + d.callback(data) + consumer.register_callback(deferred_receive) injected = consumer.attach_to_tornado() # clean up after the injected listened and return x From b2321fa4eda77e89935ad871cb3692a6a11d8196 Mon Sep 17 00:00:00 2001 From: Joshua McKenty Date: Fri, 16 Jul 2010 14:07:57 -0700 Subject: [PATCH 2/2] Makin the queues non-durable by default --- nova/rpc.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/nova/rpc.py b/nova/rpc.py index 99e820ff..c6ebb116 100644 --- a/nova/rpc.py +++ b/nova/rpc.py @@ -112,6 +112,7 @@ class TopicConsumer(Consumer): self.queue = topic self.routing_key = topic self.exchange = FLAGS.control_exchange + self.durable = False super(TopicConsumer, self).__init__(connection=connection) @@ -238,7 +239,8 @@ def send_message(topic, message, wait=True): exchange=msg_id, auto_delete=True, exchange_type="direct", - routing_key=msg_id) + routing_key=msg_id, + durable=False) consumer.register_callback(generic_response) publisher = messaging.Publisher(connection=Connection.instance(),