From 1043376e6bdcc33d541b28ce14425b53e43b20bf Mon Sep 17 00:00:00 2001 From: Oleksii Kliukin Date: Fri, 18 May 2018 11:48:15 +0200 Subject: [PATCH] Do not exit when encountering invalid system ID. (#669) Do not exit when the cluster system ID is empty or the one that doesn't pass the validation check. In that case, the cluster most likely needs a reinit; mention it in the result message. Avoid terminating Patroni, as otherwise reinit cannot happen. --- patroni/ha.py | 5 +++++ tests/test_ha.py | 1 - 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/patroni/ha.py b/patroni/ha.py index 92259b2a..0bc3a533 100644 --- a/patroni/ha.py +++ b/patroni/ha.py @@ -1101,6 +1101,11 @@ class Ha(object): self.dcs.initialize(create_new=(self.cluster.initialize is None), sysid=self.state_handler.sysid) else: # check if we are allowed to join + data_sysid = self.state_handler.sysid + if not self.sysid_valid(data_sysid): + # data directory is not empty, but no valid sysid, cluster must be broken, suggest reinit + return "data dir for the cluster is not empty, but system ID is invalid; consider doing reinitalize" + if self.sysid_valid(self.cluster.initialize) and self.cluster.initialize != self.state_handler.sysid: logger.fatal("system ID mismatch, node %s belongs to a different cluster: %s != %s", self.state_handler.name, self.cluster.initialize, self.state_handler.sysid) diff --git a/tests/test_ha.py b/tests/test_ha.py index 70b4f60f..8901f50e 100644 --- a/tests/test_ha.py +++ b/tests/test_ha.py @@ -18,7 +18,6 @@ from test_postgresql import psycopg2_connect, MockPostmaster SYSID = '12345678901' - def true(*args, **kwargs): return True