diff --git a/patroni/dcs/kubernetes.py b/patroni/dcs/kubernetes.py index d84f02c4..6c388102 100644 --- a/patroni/dcs/kubernetes.py +++ b/patroni/dcs/kubernetes.py @@ -106,7 +106,11 @@ class ObjectCache(Thread): self.start() def _list(self): - return self._func(_request_timeout=(self._retry.deadline, Timeout.DEFAULT_TIMEOUT)) + try: + return self._func(_request_timeout=(self._retry.deadline, Timeout.DEFAULT_TIMEOUT)) + except Exception: + time.sleep(1) + raise def _watch(self, resource_version): return self._func(_request_timeout=(self._retry.deadline, Timeout.DEFAULT_TIMEOUT), diff --git a/tests/test_kubernetes.py b/tests/test_kubernetes.py index 03b7df40..c853fc4a 100644 --- a/tests/test_kubernetes.py +++ b/tests/test_kubernetes.py @@ -174,3 +174,8 @@ class TestCacheBuilder(unittest.TestCase): @patch('patroni.dcs.kubernetes.ObjectCache._build_cache', Mock(side_effect=Exception)) def test_run(self): self.assertRaises(SleepException, self.k._pods.run) + + @patch('time.sleep', Mock()) + def test__list(self): + self.k._pods._func = Mock(side_effect=Exception) + self.assertRaises(Exception, self.k._pods._list)