From 70b34308ccc9b5ca778224052748bacfe78e772a Mon Sep 17 00:00:00 2001 From: Ian Barwick Date: Thu, 8 Jun 2023 16:35:56 +0900 Subject: [PATCH] repmgrd: ensure witness node metadata is updated If the primary changed while the witness repmgrd was not running, ensure the witness's upstream node ID is updated when the witness repmgrd is restarted. --- HISTORY | 5 ++++- doc/appendix-release-notes.xml | 24 +++++++++++++++++++++++- repmgrd-physical.c | 11 +++++++++++ 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/HISTORY b/HISTORY index 65071b52..4211785c 100644 --- a/HISTORY +++ b/HISTORY @@ -1,5 +1,8 @@ +5.4.1 2023-??-?? + repmgrd: ensure witness node metadata is updated (Ian) + 5.4.0 2023-03-16 - Support cloning replicas using pg-backup-api + Support cloning replicas using pg-backup-api 5.3.3 2022-10-17 Support for PostgreSQL added diff --git a/doc/appendix-release-notes.xml b/doc/appendix-release-notes.xml index 39ee8c7d..fea4681d 100644 --- a/doc/appendix-release-notes.xml +++ b/doc/appendix-release-notes.xml @@ -16,8 +16,29 @@ + + Release 5.4.1 + ??? ?? ??????, 202? + + &repmgr; 5.4.1 is a minor release providing ... + + + Bug fixes + + + + + &repmgrd;: ensure witness node metadata is updated if the primary + node changed while the witness &repmgrd; was not running. + + + + + + + - Release 5.4.0 + Release 5.4.0 Thu 15 March, 2023 &repmgr; 5.4.0 is a major release. @@ -29,6 +50,7 @@ Minor fixes to the documentation. + Release 5.3.3 diff --git a/repmgrd-physical.c b/repmgrd-physical.c index 03247437..0746c2a6 100644 --- a/repmgrd-physical.c +++ b/repmgrd-physical.c @@ -2394,6 +2394,17 @@ monitor_streaming_witness(void) terminate(ERR_BAD_CONFIG); } + /* + * It's possible that the primary changed while the witness repmgrd was not + * running. This does not affect the functionality of the witness repmgrd, but + * does mean outdated node metadata will be displayed, so update that. + */ + if (local_node_info.upstream_node_id != primary_node_id) + { + update_node_record_set_upstream(primary_conn, local_node_info.node_id, primary_node_id); + local_node_info.upstream_node_id = primary_node_id; + } + initPQExpBuffer(&event_details); appendPQExpBuffer(&event_details,