From c37f6aaab3ac00b7865dee18158114433350237e Mon Sep 17 00:00:00 2001 From: Kiall Mac Innes Date: Fri, 28 Jun 2013 21:14:26 +0100 Subject: Add support for heartbeating in the kombu RPC driver This aides in detecting connection interruptions that would otherwise go unnoticed. Fixes bug #856764 Change-Id: Id4eb3d36036969b62890175d6a33b4e304be0527 --- openstack/common/rpc/impl_kombu.py | 4 ++++ tests/unit/rpc/test_kombu.py | 21 ++++++++++++++------- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/openstack/common/rpc/impl_kombu.py b/openstack/common/rpc/impl_kombu.py index 8fb3504..ce8f2d8 100644 --- a/openstack/common/rpc/impl_kombu.py +++ b/openstack/common/rpc/impl_kombu.py @@ -83,6 +83,9 @@ kombu_opts = [ default=0, help='maximum retries with trying to connect to RabbitMQ ' '(the default of 0 implies an infinite retry count)'), + cfg.IntOpt('rabbit_heartbeat', + default=60, + help='Seconds between connection keepalive heartbeats'), cfg.BoolOpt('rabbit_durable_queues', default=False, help='use durable queues in RabbitMQ'), @@ -450,6 +453,7 @@ class Connection(object): 'userid': self.conf.rabbit_userid, 'password': self.conf.rabbit_password, 'virtual_host': self.conf.rabbit_virtual_host, + 'heartbeat': self.conf.rabbit_heartbeat, } for sp_key, value in server_params.iteritems(): diff --git a/tests/unit/rpc/test_kombu.py b/tests/unit/rpc/test_kombu.py index c8c3f32..470f98a 100644 --- a/tests/unit/rpc/test_kombu.py +++ b/tests/unit/rpc/test_kombu.py @@ -362,7 +362,8 @@ class RpcKombuTestCase(amqp.BaseRpcAMQPTestCase): 'password': FLAGS.rabbit_password, 'port': FLAGS.rabbit_port, 'virtual_host': FLAGS.rabbit_virtual_host, - 'transport': 'memory'}]) + 'transport': 'memory', + 'heartbeat': FLAGS.rabbit_heartbeat}]) def topic_send(_context, topic, msg): pass @@ -382,7 +383,8 @@ class RpcKombuTestCase(amqp.BaseRpcAMQPTestCase): 'password': 'fake_password', 'hostname': 'fake_hostname', 'port': 31337, - 'virtual_host': 'fake_virtual_host'} + 'virtual_host': 'fake_virtual_host', + 'heartbeat': FLAGS.rabbit_heartbeat} class MyConnection(impl_kombu.Connection): def __init__(myself, *args, **kwargs): @@ -394,7 +396,8 @@ class RpcKombuTestCase(amqp.BaseRpcAMQPTestCase): 'password': server_params['password'], 'port': server_params['port'], 'virtual_host': server_params['virtual_host'], - 'transport': 'memory'}]) + 'transport': 'memory', + 'heartbeat': FLAGS.rabbit_heartbeat}]) def topic_send(_context, topic, msg): pass @@ -736,25 +739,29 @@ class RpcKombuHATestCase(utils.BaseTestCase): 'password': FLAGS.rabbit_password, 'port': 1234, 'virtual_host': FLAGS.rabbit_virtual_host, - 'transport': 'memory'}, + 'transport': 'memory', + 'heartbeat': FLAGS.rabbit_heartbeat}, {'hostname': 'host2', 'userid': FLAGS.rabbit_userid, 'password': FLAGS.rabbit_password, 'port': 5678, 'virtual_host': FLAGS.rabbit_virtual_host, - 'transport': 'memory'}, + 'transport': 'memory', + 'heartbeat': FLAGS.rabbit_heartbeat}, {'hostname': '::1', 'userid': FLAGS.rabbit_userid, 'password': FLAGS.rabbit_password, 'port': 2345, 'virtual_host': FLAGS.rabbit_virtual_host, - 'transport': 'memory'}, + 'transport': 'memory', + 'heartbeat': FLAGS.rabbit_heartbeat}, {'hostname': '2001:0db8:85a3:0042:0000:8a2e:0370:7334', 'userid': FLAGS.rabbit_userid, 'password': FLAGS.rabbit_password, 'port': 5672, 'virtual_host': FLAGS.rabbit_virtual_host, - 'transport': 'memory'}, + 'transport': 'memory', + 'heartbeat': FLAGS.rabbit_heartbeat}, ] } -- cgit