summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2014-04-11 16:40:55 +0000
committerGerrit Code Review <review@openstack.org>2014-04-11 16:40:55 +0000
commit07444514a50b6d4ed9e0b2c4fadd887737c40f09 (patch)
tree568219b89fdbcd1f2fc274bf72666198cb350c70
parent14abab6bd88a76aee2dcb34dfa1d88185bf0ad37 (diff)
parentbbc49d3fcf98384df9b211f1f451ab64255dd698 (diff)
downloadironic-07444514a50b6d4ed9e0b2c4fadd887737c40f09.tar.gz
Merge "Cherry pick oslo rpc HA fixes" into milestone-proposed
-rw-r--r--ironic/openstack/common/rpc/impl_kombu.py5
-rw-r--r--ironic/openstack/common/rpc/impl_qpid.py8
2 files changed, 9 insertions, 4 deletions
diff --git a/ironic/openstack/common/rpc/impl_kombu.py b/ironic/openstack/common/rpc/impl_kombu.py
index 2d06be9aa..31c079f75 100644
--- a/ironic/openstack/common/rpc/impl_kombu.py
+++ b/ironic/openstack/common/rpc/impl_kombu.py
@@ -458,6 +458,9 @@ class Connection(object):
self.params_list = params_list
+ brokers_count = len(self.params_list)
+ self.next_broker_indices = itertools.cycle(range(brokers_count))
+
self.memory_transport = self.conf.fake_rabbit
self.connection = None
@@ -528,7 +531,7 @@ class Connection(object):
attempt = 0
while True:
- params = self.params_list[attempt % len(self.params_list)]
+ params = self.params_list[next(self.next_broker_indices)]
attempt += 1
try:
self._connect(params)
diff --git a/ironic/openstack/common/rpc/impl_qpid.py b/ironic/openstack/common/rpc/impl_qpid.py
index 718ff7259..324fcf2bf 100644
--- a/ironic/openstack/common/rpc/impl_qpid.py
+++ b/ironic/openstack/common/rpc/impl_qpid.py
@@ -467,6 +467,10 @@ class Connection(object):
self.brokers = params['qpid_hosts']
self.username = params['username']
self.password = params['password']
+
+ brokers_count = len(self.brokers)
+ self.next_broker_indices = itertools.cycle(range(brokers_count))
+
self.connection_create(self.brokers[0])
self.reconnect()
@@ -494,7 +498,6 @@ class Connection(object):
def reconnect(self):
"""Handles reconnecting and re-establishing sessions and queues."""
- attempt = 0
delay = 1
while True:
# Close the session if necessary
@@ -504,8 +507,7 @@ class Connection(object):
except qpid_exceptions.ConnectionError:
pass
- broker = self.brokers[attempt % len(self.brokers)]
- attempt += 1
+ broker = self.brokers[next(self.next_broker_indices)]
try:
self.connection_create(broker)