From ff9ff81505307a4fa729d38604eb4bf15cd7165c Mon Sep 17 00:00:00 2001 From: Alex Lutay <1928266+taurus-forever@users.noreply.github.com> Date: Thu, 18 Jun 2026 10:41:46 +0200 Subject: [PATCH] Add extra debug to catch Raft status on CI tests --- src/charm.py | 1 + src/cluster.py | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/charm.py b/src/charm.py index 6ab0908d9d..43c9e34009 100755 --- a/src/charm.py +++ b/src/charm.py @@ -436,6 +436,7 @@ def primary_endpoint(self) -> str | None: logger.debug("primary endpoint early exit: Peer relation not joined yet.") return None try: + self._patroni.log_raft_status() primary = self._patroni.get_primary() or self._patroni.get_standby_leader() primary_endpoint = self._patroni.get_member_ip(primary) if primary else None # Force a retry if there is no primary or the member that was diff --git a/src/cluster.py b/src/cluster.py index 52eb79e424..1a692ebe49 100644 --- a/src/cluster.py +++ b/src/cluster.py @@ -840,6 +840,7 @@ def has_raft_quorum(self) -> bool: raft_host = "127.0.0.1:2222" try: raft_status = syncobj_util.executeCommand(raft_host, ["status"]) + logger.debug("Local raft status: %s", raft_status) except UtilityException: logger.warning("Has raft quorum: Cannot connect to raft cluster") return False @@ -909,6 +910,16 @@ def get_running_cluster_members(self) -> list[str]: except Exception: return [] + def log_raft_status(self) -> None: + """Best-effort dump of local raft status for debugging.""" + raft_host = "127.0.0.1:2222" + try: + syncobj_util = TcpUtility(password=self.raft_password, timeout=3) + raft_status = syncobj_util.executeCommand(raft_host, ["status"]) + logger.debug("Local raft status: %s", raft_status) + except UtilityException: + logger.debug("Local raft status unavailable") + def remove_raft_member(self, member_ip: str) -> None: """Remove a member from the raft cluster. @@ -930,12 +941,14 @@ def remove_raft_member(self, member_ip: str) -> None: raft_host = "127.0.0.1:2222" try: raft_status = syncobj_util.executeCommand(raft_host, ["status"]) + logger.debug("Local raft status: %s", raft_status) except UtilityException: logger.warning("Remove raft member: Cannot connect to raft cluster") raise RemoveRaftMemberFailedError() from None # Check whether the member is still part of the raft cluster. if not member_ip or f"partner_node_status_server_{member_ip}:2222" not in raft_status: + logger.debug(f"Local raft member %s is missing in cluster", member_ip) return # If there's no quorum and the leader left raft cluster is stuck