From fca724186e1a6929b64dfc90942e909bd71518df Mon Sep 17 00:00:00 2001 From: Alexander Kukushkin Date: Fri, 24 Sep 2021 08:22:20 +0200 Subject: [PATCH] DCS.write_leader_optime() should update /status key (#2064) This moment was forgotten in the failover logical slots implementation. --- patroni/dcs/__init__.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/patroni/dcs/__init__.py b/patroni/dcs/__init__.py index d96087d1..b3e68d1d 100644 --- a/patroni/dcs/__init__.py +++ b/patroni/dcs/__init__.py @@ -774,8 +774,7 @@ class AbstractDCS(object): :returns: `!True` on success.""" def write_leader_optime(self, last_lsn): - if self._last_lsn != last_lsn and self._write_leader_optime(last_lsn): - self._last_lsn = last_lsn + self.write_status({self._OPTIME: last_lsn}) @abc.abstractmethod def _write_status(self, value): @@ -789,7 +788,8 @@ class AbstractDCS(object): self._last_status = value cluster = self.cluster min_version = cluster and cluster.min_version - if min_version and min_version < (2, 1, 0): + if min_version and min_version < (2, 1, 0) and self._last_lsn != value[self._OPTIME]: + self._last_lsn = value[self._OPTIME] self._write_leader_optime(str(value[self._OPTIME])) @abc.abstractmethod @@ -890,7 +890,7 @@ class AbstractDCS(object): :param last_lsn: latest checkpoint location in bytes""" if last_lsn: - self.write_leader_optime(last_lsn) + self.write_status({self._OPTIME: last_lsn}) return self._delete_leader() @abc.abstractmethod