Skip to content

Commit ff9ff81

Browse files
Add extra debug to catch Raft status on CI tests
1 parent ed2ed83 commit ff9ff81

2 files changed

Lines changed: 14 additions & 0 deletions

File tree

src/charm.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -436,6 +436,7 @@ def primary_endpoint(self) -> str | None:
436436
logger.debug("primary endpoint early exit: Peer relation not joined yet.")
437437
return None
438438
try:
439+
self._patroni.log_raft_status()
439440
primary = self._patroni.get_primary() or self._patroni.get_standby_leader()
440441
primary_endpoint = self._patroni.get_member_ip(primary) if primary else None
441442
# Force a retry if there is no primary or the member that was

src/cluster.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -840,6 +840,7 @@ def has_raft_quorum(self) -> bool:
840840
raft_host = "127.0.0.1:2222"
841841
try:
842842
raft_status = syncobj_util.executeCommand(raft_host, ["status"])
843+
logger.debug("Local raft status: %s", raft_status)
843844
except UtilityException:
844845
logger.warning("Has raft quorum: Cannot connect to raft cluster")
845846
return False
@@ -909,6 +910,16 @@ def get_running_cluster_members(self) -> list[str]:
909910
except Exception:
910911
return []
911912

913+
def log_raft_status(self) -> None:
914+
"""Best-effort dump of local raft status for debugging."""
915+
raft_host = "127.0.0.1:2222"
916+
try:
917+
syncobj_util = TcpUtility(password=self.raft_password, timeout=3)
918+
raft_status = syncobj_util.executeCommand(raft_host, ["status"])
919+
logger.debug("Local raft status: %s", raft_status)
920+
except UtilityException:
921+
logger.debug("Local raft status unavailable")
922+
912923
def remove_raft_member(self, member_ip: str) -> None:
913924
"""Remove a member from the raft cluster.
914925
@@ -930,12 +941,14 @@ def remove_raft_member(self, member_ip: str) -> None:
930941
raft_host = "127.0.0.1:2222"
931942
try:
932943
raft_status = syncobj_util.executeCommand(raft_host, ["status"])
944+
logger.debug("Local raft status: %s", raft_status)
933945
except UtilityException:
934946
logger.warning("Remove raft member: Cannot connect to raft cluster")
935947
raise RemoveRaftMemberFailedError() from None
936948

937949
# Check whether the member is still part of the raft cluster.
938950
if not member_ip or f"partner_node_status_server_{member_ip}:2222" not in raft_status:
951+
logger.debug(f"Local raft member %s is missing in cluster", member_ip)
939952
return
940953

941954
# If there's no quorum and the leader left raft cluster is stuck

0 commit comments

Comments
 (0)