From c4c421e528a8ffbbe16d016cb9d41acc18567771 Mon Sep 17 00:00:00 2001 From: Federico Ceratto Date: Fri, 27 Nov 2015 12:26:43 +0000 Subject: [PATCH] Retry Coordinator start indefinitely Change-Id: Iab9a131bf2b606431033236ec40dcda655a9ee78 Closes-Bug: 1514602 --- designate/coordination.py | 16 +++++++++++----- designate/tests/test_coordination.py | 2 +- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/designate/coordination.py b/designate/coordination.py index 2b05e31d5..c9e4c4d26 100644 --- a/designate/coordination.py +++ b/designate/coordination.py @@ -17,6 +17,7 @@ # under the License. import math +import time import uuid from oslo_config import cfg @@ -79,12 +80,17 @@ class CoordinationMixin(object): super(CoordinationMixin, self).start() if self._coordinator is not None: - self._coordinator.start() + while not self._coordination_started: + try: + self._coordinator.start() + self._coordinator.create_group(self.service_name) + self._coordinator.join_group(self.service_name) + self._coordination_started = True - self._coordinator.create_group(self.service_name) - self._coordinator.join_group(self.service_name) - - self._coordination_started = True + except Exception: + LOG.warn(_LW("Failed to start Coordinator:"), + exc_info=True) + time.sleep(15) def stop(self): if self._coordinator is not None: diff --git a/designate/tests/test_coordination.py b/designate/tests/test_coordination.py index 3119000b2..a62b21b32 100644 --- a/designate/tests/test_coordination.py +++ b/designate/tests/test_coordination.py @@ -47,7 +47,7 @@ class TestCoordinationMixin(TestCase): service._coordinator.get_groups().get()) self.assertIn(service._coordination_id.encode('utf-8'), service._coordinator.get_members( - service.service_name).get()) + service.service_name).get()) service.stop() def test_stop(self):