From cdc80a1d89e42fd9be81ebe745151db0b76e23d8 Mon Sep 17 00:00:00 2001 From: Alexander Kukushkin Date: Thu, 10 Feb 2022 15:32:29 +0100 Subject: [PATCH] Restart etcd3 watcher if all etcd nodes don't respond (#2186) Close https://github.com/zalando/patroni/issues/2180 --- patroni/dcs/etcd.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/patroni/dcs/etcd.py b/patroni/dcs/etcd.py index 185b1ae7..d536baca 100644 --- a/patroni/dcs/etcd.py +++ b/patroni/dcs/etcd.py @@ -269,6 +269,7 @@ class AbstractEtcdClientWithFailover(etcd.Client): nodes, timeout, retries = self._calculate_timeouts(etcd_nodes, remaining_time) if nodes == 0: self._update_machines_cache = True + self.set_base_uri(self._base_uri) # trigger Etcd3 watcher restart raise ex retry.sleep_func(sleeptime) retry.update_delay() @@ -394,8 +395,9 @@ class AbstractEtcdClientWithFailover(etcd.Client): self._machines_cache_updated = time.time() def set_base_uri(self, value): - logger.info('Selected new etcd server %s', value) - self._base_uri = value + if self._base_uri != value: + logger.info('Selected new etcd server %s', value) + self._base_uri = value class EtcdClient(AbstractEtcdClientWithFailover):