Compare commits

..

1 Commits

Author SHA1 Message Date
Mario Gonzalez
4e5246f210 Bump repmgr version 5.5.0 2024-11-07 11:44:35 -03:00
9 changed files with 32 additions and 76 deletions

View File

@@ -1,9 +1,4 @@
5.5.0 2024-11-20 5.4.1 2023-??-??
Support for PostgreSQL 17 added
Fix warnings detected by the -Wshadow=compatible-local
added in PostgreSQL 16
5.4.1 2023-07-04
repmgrd: ensure witness node metadata is updated (Ian) repmgrd: ensure witness node metadata is updated (Ian)
5.4.0 2023-03-16 5.4.0 2023-03-16

View File

@@ -1624,7 +1624,7 @@ get_ready_archive_files(PGconn *conn, const char *data_directory)
while ((arcdir_ent = readdir(arcdir)) != NULL) while ((arcdir_ent = readdir(arcdir)) != NULL)
{ {
struct stat local_statbuf; struct stat statbuf;
char file_path[MAXPGPATH + sizeof(arcdir_ent->d_name)]; char file_path[MAXPGPATH + sizeof(arcdir_ent->d_name)];
int basenamelen = 0; int basenamelen = 0;
@@ -1634,7 +1634,7 @@ get_ready_archive_files(PGconn *conn, const char *data_directory)
arcdir_ent->d_name); arcdir_ent->d_name);
/* skip non-files */ /* skip non-files */
if (stat(file_path, &local_statbuf) == 0 && !S_ISREG(local_statbuf.st_mode)) if (stat(file_path, &statbuf) == 0 && !S_ISREG(statbuf.st_mode))
{ {
continue; continue;
} }

View File

@@ -16,24 +16,9 @@
</para> </para>
<!-- remember to update the release date in ../repmgr_version.h.in --> <!-- remember to update the release date in ../repmgr_version.h.in -->
<sect1 id="release-5.5.0">
<title>Release 5.5.0</title>
<para><emphasis>Wed 20 November, 2024</emphasis></para>
<para>
&repmgr; 5.5.0 is a major release.
</para>
<para>
This release adds support for PostgreSQL 17
</para>
<para>
Fixes warnings detected by the -Wshadow gcc flag added in PostgreSQL 16.
</para>
</sect1>
<sect1 id="release-5.4.1"> <sect1 id="release-5.4.1">
<title id="release-current">Release 5.4.1</title> <title id="release-current">Release 5.4.1</title>
<para><emphasis>Tue 04 Jul, 2023</emphasis></para> <para><emphasis>??? ?? ??????, 202?</emphasis></para>
<para> <para>
&repmgr; 5.4.1 is a minor release providing ... &repmgr; 5.4.1 is a minor release providing ...
</para> </para>

View File

@@ -26,7 +26,7 @@
<abstract> <abstract>
<para> <para>
This is the official documentation of &repmgr; &repmgrversion; for This is the official documentation of &repmgr; &repmgrversion; for
use with PostgreSQL 12 - PostgreSQL 17. use with PostgreSQL 9.4 - PostgreSQL 15.
</para> </para>
<para> <para>
&repmgr; is being continually developed and we strongly recommend using the &repmgr; is being continually developed and we strongly recommend using the

View File

@@ -394,6 +394,7 @@ do_node_status(void)
if (node_info.inactive_replication_slots > 0) if (node_info.inactive_replication_slots > 0)
{ {
KeyValueList inactive_replication_slots = {NULL, NULL}; KeyValueList inactive_replication_slots = {NULL, NULL};
KeyValueListCell *cell = NULL;
(void) get_inactive_replication_slots(conn, &inactive_replication_slots); (void) get_inactive_replication_slots(conn, &inactive_replication_slots);
@@ -523,6 +524,8 @@ do_node_status(void)
if (node_info.inactive_replication_slots) if (node_info.inactive_replication_slots)
{ {
KeyValueList inactive_replication_slots = {NULL, NULL}; KeyValueList inactive_replication_slots = {NULL, NULL};
KeyValueListCell *cell = NULL;
(void) get_inactive_replication_slots(conn, &inactive_replication_slots); (void) get_inactive_replication_slots(conn, &inactive_replication_slots);
for (cell = inactive_replication_slots.head; cell; cell = cell->next) for (cell = inactive_replication_slots.head; cell; cell = cell->next)
{ {
@@ -2543,7 +2546,6 @@ do_node_rejoin(void)
int server_version_num = UNKNOWN_SERVER_VERSION_NUM; int server_version_num = UNKNOWN_SERVER_VERSION_NUM;
bool hide_standby_signal = false; bool hide_standby_signal = false;
KeyValueListCell *cell = NULL;
PQExpBufferData command; PQExpBufferData command;
PQExpBufferData command_output; PQExpBufferData command_output;
PQExpBufferData follow_output; PQExpBufferData follow_output;
@@ -2963,7 +2965,7 @@ do_node_rejoin(void)
else else
{ {
while ((slotdir_ent = readdir(slotdir)) != NULL) { while ((slotdir_ent = readdir(slotdir)) != NULL) {
struct stat local_statbuf; struct stat statbuf;
PQExpBufferData slotdir_ent_path; PQExpBufferData slotdir_ent_path;
if (strcmp(slotdir_ent->d_name, ".") == 0 || strcmp(slotdir_ent->d_name, "..") == 0) if (strcmp(slotdir_ent->d_name, ".") == 0 || strcmp(slotdir_ent->d_name, "..") == 0)
@@ -2976,7 +2978,7 @@ do_node_rejoin(void)
slotdir_path.data, slotdir_path.data,
slotdir_ent->d_name); slotdir_ent->d_name);
if (stat(slotdir_ent_path.data, &local_statbuf) == 0 && !S_ISDIR(local_statbuf.st_mode)) if (stat(slotdir_ent_path.data, &statbuf) == 0 && !S_ISDIR(statbuf.st_mode))
{ {
termPQExpBuffer(&slotdir_ent_path); termPQExpBuffer(&slotdir_ent_path);
continue; continue;
@@ -3107,6 +3109,7 @@ do_node_rejoin(void)
else else
{ {
KeyValueList inactive_replication_slots = {NULL, NULL}; KeyValueList inactive_replication_slots = {NULL, NULL};
KeyValueListCell *cell = NULL;
int inactive_count = 0; int inactive_count = 0;
PQExpBufferData slotinfo; PQExpBufferData slotinfo;

View File

@@ -235,38 +235,6 @@ do_primary_register(void)
return; return;
} }
static inline void reset_node_info(t_node_info *info)
{
info->node_id = NODE_NOT_FOUND;
info->upstream_node_id = NO_UPSTREAM_NODE;
info->type = UNKNOWN;
info->node_name[0] = '\0';
info->upstream_node_name[0] = '\0';
info->conninfo[0] = '\0';
info->repluser[0] = '\0';
info->priority = DEFAULT_PRIORITY;
info->active = true;
info->slot_name[0] = '\0';
info->config_file[0] = '\0';
info->last_wal_receive_lsn = InvalidXLogRecPtr;
info->node_status = NODE_STATUS_UNKNOWN;
info->recovery_type = RECTYPE_UNKNOWN;
info->monitoring_state = MS_NORMAL;
info->conn = NULL;
info->details[0] = '\0';
info->reachable = true;
info->attached = true;
/* various statistics */
info->max_wal_senders = -1;
info->attached_wal_receivers = -1;
info->max_replication_slots = -1;
info->total_replication_slots = -1;
info->active_replication_slots = -1;
info->inactive_replication_slots = -1;
info->replication_info = NULL;
strlcpy(info->location, DEFAULT_LOCATION, sizeof(info->location));
}
/* /*
* do_primary_unregister() * do_primary_unregister()
@@ -468,7 +436,7 @@ do_primary_unregister(void)
} }
else if (recovery_type == RECTYPE_PRIMARY) else if (recovery_type == RECTYPE_PRIMARY)
{ {
reset_node_info(&primary_node_info); t_node_info primary_node_info = T_NODE_INFO_INITIALIZER;
bool primary_record_found = false; bool primary_record_found = false;
primary_record_found = get_primary_node_record(primary_conn, &primary_node_info); primary_record_found = get_primary_node_record(primary_conn, &primary_node_info);

View File

@@ -535,7 +535,7 @@ do_standby_clone(void)
if (external_config_files == true) if (external_config_files == true)
{ {
r = 0; int r;
PQExpBufferData msg; PQExpBufferData msg;
initPQExpBuffer(&msg); initPQExpBuffer(&msg);
@@ -762,7 +762,7 @@ do_standby_clone(void)
if (mode == pg_basebackup && runtime_options.verify_backup == true) if (mode == pg_basebackup && runtime_options.verify_backup == true)
{ {
PQExpBufferData command; PQExpBufferData command;
r = 0; int r;
struct stat st; struct stat st;
initPQExpBuffer(&command); initPQExpBuffer(&command);
@@ -3927,6 +3927,7 @@ do_standby_switchover(void)
if (PQserverVersion(local_conn) < 130000 && is_wal_replay_paused(local_conn, false) == true) if (PQserverVersion(local_conn) < 130000 && is_wal_replay_paused(local_conn, false) == true)
{ {
ReplInfo replication_info;
init_replication_info(&replication_info); init_replication_info(&replication_info);
if (get_replication_info(local_conn, STANDBY, &replication_info) == false) if (get_replication_info(local_conn, STANDBY, &replication_info) == false)
@@ -4783,7 +4784,7 @@ do_standby_switchover(void)
{ {
NodeInfoListCell *cell = NULL; NodeInfoListCell *cell = NULL;
ItemList repmgrd_connection_errors = {NULL, NULL}; ItemList repmgrd_connection_errors = {NULL, NULL};
i = 0; int i = 0;
int unreachable_node_count = 0; int unreachable_node_count = 0;
get_all_node_records(local_conn, &all_nodes); get_all_node_records(local_conn, &all_nodes);
@@ -5098,6 +5099,8 @@ do_standby_switchover(void)
/* database server could not be contacted */ /* database server could not be contacted */
if (ping_res == PQPING_NO_RESPONSE || ping_res == PQPING_NO_ATTEMPT) if (ping_res == PQPING_NO_RESPONSE || ping_res == PQPING_NO_ATTEMPT)
{ {
bool command_success;
/* /*
* remote server can't be contacted at protocol level - that * remote server can't be contacted at protocol level - that
* doesn't necessarily mean it's shut down, so we'll ask its * doesn't necessarily mean it's shut down, so we'll ask its
@@ -5675,7 +5678,7 @@ do_standby_switchover(void)
{ {
ItemList repmgrd_unpause_errors = {NULL, NULL}; ItemList repmgrd_unpause_errors = {NULL, NULL};
NodeInfoListCell *cell = NULL; NodeInfoListCell *cell = NULL;
i = 0; int i = 0;
int error_node_count = 0; int error_node_count = 0;
for (cell = all_nodes.head; cell; cell = cell->next) for (cell = all_nodes.head; cell; cell = cell->next)
@@ -6510,12 +6513,12 @@ check_upstream_config(PGconn *conn, int server_version_num, t_node_info *upstrea
if (mode == pg_basebackup) if (mode == pg_basebackup)
{ {
PGconn **connections; PGconn **connections;
int available_wal_senders; int i;
int min_replication_connections = 1; int available_wal_senders;
int possible_replication_connections = 0; int min_replication_connections = 1;
i = 0; int possible_replication_connections = 0;
t_conninfo_param_list repl_conninfo = T_CONNINFO_PARAM_LIST_INITIALIZER; t_conninfo_param_list repl_conninfo = T_CONNINFO_PARAM_LIST_INITIALIZER;
/* /*
@@ -8477,6 +8480,7 @@ check_sibling_nodes(NodeInfoList *sibling_nodes, SiblingNodeStats *sibling_nodes
if (sibling_nodes->node_count > 0) if (sibling_nodes->node_count > 0)
{ {
PQExpBufferData nodes; PQExpBufferData nodes;
NodeInfoListCell *cell;
initPQExpBuffer(&nodes); initPQExpBuffer(&nodes);

View File

@@ -1,6 +1,6 @@
# repmgr extension # repmgr extension
comment = 'Replication manager for PostgreSQL' comment = 'Replication manager for PostgreSQL'
default_version = '5.5' default_version = '5.4'
module_pathname = '$libdir/repmgr' module_pathname = '$libdir/repmgr'
relocatable = false relocatable = false
schema = repmgr schema = repmgr

View File

@@ -1359,8 +1359,6 @@ monitor_streaming_standby(void)
MonitoringState local_monitoring_state = MS_NORMAL; MonitoringState local_monitoring_state = MS_NORMAL;
instr_time local_degraded_monitoring_start; instr_time local_degraded_monitoring_start;
bool upstream_check_result;
int degraded_monitoring_elapsed;
int last_known_upstream_node_id = UNKNOWN_NODE_ID; int last_known_upstream_node_id = UNKNOWN_NODE_ID;
log_debug("monitor_streaming_standby()"); log_debug("monitor_streaming_standby()");
@@ -1549,6 +1547,7 @@ monitor_streaming_standby(void)
while (true) while (true)
{ {
bool upstream_check_result;
log_verbose(LOG_DEBUG, "checking %s", upstream_node_info.conninfo); log_verbose(LOG_DEBUG, "checking %s", upstream_node_info.conninfo);
@@ -1771,7 +1770,8 @@ monitor_streaming_standby(void)
if (monitoring_state == MS_DEGRADED) if (monitoring_state == MS_DEGRADED)
{ {
degraded_monitoring_elapsed = calculate_elapsed(degraded_monitoring_start); int degraded_monitoring_elapsed = calculate_elapsed(degraded_monitoring_start);
bool upstream_check_result;
if (config_file_options.degraded_monitoring_timeout > 0 if (config_file_options.degraded_monitoring_timeout > 0
&& degraded_monitoring_elapsed > config_file_options.degraded_monitoring_timeout) && degraded_monitoring_elapsed > config_file_options.degraded_monitoring_timeout)
@@ -1894,6 +1894,7 @@ monitor_streaming_standby(void)
*/ */
if (failover_state == FAILOVER_STATE_PROMOTION_FAILED) if (failover_state == FAILOVER_STATE_PROMOTION_FAILED)
{ {
int degraded_monitoring_elapsed;
int former_upstream_node_id = local_node_info.upstream_node_id; int former_upstream_node_id = local_node_info.upstream_node_id;
NodeInfoList sibling_nodes = T_NODE_INFO_LIST_INITIALIZER; NodeInfoList sibling_nodes = T_NODE_INFO_LIST_INITIALIZER;
PQExpBufferData event_details; PQExpBufferData event_details;
@@ -1952,7 +1953,7 @@ monitor_streaming_standby(void)
if (local_node_info.type == PRIMARY) if (local_node_info.type == PRIMARY)
{ {
degraded_monitoring_elapsed = calculate_elapsed(degraded_monitoring_start); int degraded_monitoring_elapsed = calculate_elapsed(degraded_monitoring_start);
log_notice(_("resuming monitoring as primary node after %i seconds"), log_notice(_("resuming monitoring as primary node after %i seconds"),
degraded_monitoring_elapsed); degraded_monitoring_elapsed);