diff options
author | Jenkins <jenkins@review.openstack.org> | 2015-03-25 00:28:32 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2015-03-25 00:28:32 +0000 |
commit | 696ef560193258d0313f8ed6cee54179766234cc (patch) | |
tree | 570a1cc0e0c40be64c16f6c23aa026833aa4ddf0 | |
parent | 7cddd594abf0c76de32f532984e34eb28a5d8b2a (diff) | |
parent | b5f91b2167f9c5a32620ebf7c62a9865ed125070 (diff) | |
download | oslo-messaging-696ef560193258d0313f8ed6cee54179766234cc.tar.gz |
Merge "Reconnect on connection lost in heartbeat thread" into stable/kilo
-rw-r--r-- | oslo_messaging/_drivers/impl_rabbit.py | 1 | ||||
-rw-r--r-- | oslo_messaging/tests/drivers/test_impl_rabbit.py | 8 |
2 files changed, 8 insertions, 1 deletions
diff --git a/oslo_messaging/_drivers/impl_rabbit.py b/oslo_messaging/_drivers/impl_rabbit.py index b24e67a..08e556b 100644 --- a/oslo_messaging/_drivers/impl_rabbit.py +++ b/oslo_messaging/_drivers/impl_rabbit.py @@ -951,6 +951,7 @@ class Connection(object): except recoverable_errors as exc: LOG.info(_LI("A recoverable connection/channel error " "occurred, trying to reconnect: %s"), exc) + self.ensure_connection() except Exception: LOG.exception(_LE("Unexpected error during heartbeart " "thread processing, retrying...")) diff --git a/oslo_messaging/tests/drivers/test_impl_rabbit.py b/oslo_messaging/tests/drivers/test_impl_rabbit.py index 3f3145f..dacb40a 100644 --- a/oslo_messaging/tests/drivers/test_impl_rabbit.py +++ b/oslo_messaging/tests/drivers/test_impl_rabbit.py @@ -62,7 +62,10 @@ class TestHeartbeat(test_utils.BaseTestCase): @mock.patch('kombu.connection.Connection.heartbeat_check') @mock.patch('oslo_messaging._drivers.impl_rabbit.Connection.' '_heartbeat_supported_and_enabled', return_value=True) - def _do_test_heartbeat_sent(self, fake_heartbeat_support, fake_heartbeat, + @mock.patch('oslo_messaging._drivers.impl_rabbit.Connection.' + 'ensure_connection') + def _do_test_heartbeat_sent(self, fake_ensure_connection, + fake_heartbeat_support, fake_heartbeat, fake_logger, heartbeat_side_effect=None, info=None): @@ -79,6 +82,7 @@ class TestHeartbeat(test_utils.BaseTestCase): 'kombu+memory:////') self.addCleanup(transport.cleanup) conn = transport._driver._get_connection() + conn.ensure(method=lambda: True) event.wait() conn._heartbeat_stop() @@ -86,8 +90,10 @@ class TestHeartbeat(test_utils.BaseTestCase): self.assertLess(0, fake_heartbeat.call_count) if not heartbeat_side_effect: + self.assertEqual(1, fake_ensure_connection.call_count) self.assertEqual(2, fake_logger.info.call_count) else: + self.assertEqual(2, fake_ensure_connection.call_count) self.assertEqual(3, fake_logger.info.call_count) self.assertIn(mock.call(info, mock.ANY), fake_logger.info.mock_calls) |