repmgrd: note node type when logging child node dis/re-connections

This commit is contained in:
Ian Barwick
2019-05-30 14:06:54 +09:00
parent a6ea1d0fda
commit 06a83247c9

View File

@@ -57,6 +57,7 @@ typedef struct t_child_node_info
{ {
int node_id; int node_id;
char node_name[NAMEDATALEN]; char node_name[NAMEDATALEN];
t_server_type type;
NodeAttached attached; NodeAttached attached;
instr_time detached_time; instr_time detached_time;
struct t_child_node_info *next; struct t_child_node_info *next;
@@ -118,7 +119,7 @@ static void parse_failover_validation_command(const char *template, t_node_info
static bool check_node_can_follow(PGconn *local_conn, XLogRecPtr local_xlogpos, PGconn *follow_target_conn, t_node_info *follow_target_node_info); static bool check_node_can_follow(PGconn *local_conn, XLogRecPtr local_xlogpos, PGconn *follow_target_conn, t_node_info *follow_target_node_info);
static void check_witness_attached(t_node_info *node_info, bool startup); static void check_witness_attached(t_node_info *node_info, bool startup);
static t_child_node_info *append_child_node_record(t_child_node_info_list *nodes, int node_id, const char *node_name, NodeAttached attached); static t_child_node_info *append_child_node_record(t_child_node_info_list *nodes, int node_id, const char *node_name, t_server_type type, NodeAttached attached);
static void remove_child_node_record(t_child_node_info_list *nodes, int node_id); static void remove_child_node_record(t_child_node_info_list *nodes, int node_id);
static void clear_child_node_info_list(t_child_node_info_list *nodes); static void clear_child_node_info_list(t_child_node_info_list *nodes);
static void parse_child_nodes_disconnect_command(char *parsed_command, char *template, int reporting_node_id); static void parse_child_nodes_disconnect_command(char *parsed_command, char *template, int reporting_node_id);
@@ -332,6 +333,7 @@ monitor_streaming_primary(void)
(void) append_child_node_record(&local_child_nodes, (void) append_child_node_record(&local_child_nodes,
cell->node_info->node_id, cell->node_info->node_id,
cell->node_info->node_name, cell->node_info->node_name,
cell->node_info->type,
cell->node_info->attached == NODE_ATTACHED ? NODE_ATTACHED : NODE_ATTACHED_UNKNOWN); cell->node_info->attached == NODE_ATTACHED ? NODE_ATTACHED : NODE_ATTACHED_UNKNOWN);
/* /*
@@ -853,6 +855,7 @@ check_primary_child_nodes(t_child_node_info_list *local_child_nodes)
detached_child_node = append_child_node_record(&disconnected_child_nodes, detached_child_node = append_child_node_record(&disconnected_child_nodes,
local_child_node_rec->node_id, local_child_node_rec->node_id,
local_child_node_rec->node_name, local_child_node_rec->node_name,
local_child_node_rec->type,
NODE_DETACHED); NODE_DETACHED);
detached_child_node->detached_time = local_child_node_rec->detached_time; detached_child_node->detached_time = local_child_node_rec->detached_time;
} }
@@ -866,6 +869,7 @@ check_primary_child_nodes(t_child_node_info_list *local_child_nodes)
attached_child_node = append_child_node_record(&reconnected_child_nodes, attached_child_node = append_child_node_record(&reconnected_child_nodes,
local_child_node_rec->node_id, local_child_node_rec->node_id,
local_child_node_rec->node_name, local_child_node_rec->node_name,
local_child_node_rec->type,
NODE_ATTACHED); NODE_ATTACHED);
attached_child_node->detached_time = local_child_node_rec->detached_time; attached_child_node->detached_time = local_child_node_rec->detached_time;
INSTR_TIME_SET_ZERO(local_child_node_rec->detached_time); INSTR_TIME_SET_ZERO(local_child_node_rec->detached_time);
@@ -877,6 +881,7 @@ check_primary_child_nodes(t_child_node_info_list *local_child_nodes)
append_child_node_record(&new_child_nodes, append_child_node_record(&new_child_nodes,
local_child_node_rec->node_id, local_child_node_rec->node_id,
local_child_node_rec->node_name, local_child_node_rec->node_name,
local_child_node_rec->type,
NODE_ATTACHED); NODE_ATTACHED);
} }
} }
@@ -896,10 +901,12 @@ check_primary_child_nodes(t_child_node_info_list *local_child_nodes)
(void) append_child_node_record(local_child_nodes, (void) append_child_node_record(local_child_nodes,
cell->node_info->node_id, cell->node_info->node_id,
cell->node_info->node_name, cell->node_info->node_name,
cell->node_info->type,
attached); attached);
(void) append_child_node_record(&new_child_nodes, (void) append_child_node_record(&new_child_nodes,
cell->node_info->node_id, cell->node_info->node_id,
cell->node_info->node_name, cell->node_info->node_name,
cell->node_info->type,
attached); attached);
} }
} }
@@ -925,7 +932,8 @@ check_primary_child_nodes(t_child_node_info_list *local_child_nodes)
if (db_node_rec_found == false) if (db_node_rec_found == false)
{ {
log_notice(_("child node \"%s\" (ID: %i) is no longer connected or registered"), log_notice(_("%s node \"%s\" (ID: %i) is no longer connected or registered"),
get_node_type_string(local_child_node_rec->type),
local_child_node_rec->node_name, local_child_node_rec->node_name,
local_child_node_rec->node_id); local_child_node_rec->node_id);
remove_child_node_record(local_child_nodes, local_child_node_rec->node_id); remove_child_node_record(local_child_nodes, local_child_node_rec->node_id);
@@ -942,7 +950,8 @@ check_primary_child_nodes(t_child_node_info_list *local_child_nodes)
PQExpBufferData event_details; PQExpBufferData event_details;
initPQExpBuffer(&event_details); initPQExpBuffer(&event_details);
appendPQExpBuffer(&event_details, appendPQExpBuffer(&event_details,
_("node \"%s\" (ID: %i) has disconnected"), _("%s node \"%s\" (ID: %i) has disconnected"),
get_node_type_string(child_node_rec->type),
child_node_rec->node_name, child_node_rec->node_name,
child_node_rec->node_id); child_node_rec->node_id);
log_notice("%s", event_details.data); log_notice("%s", event_details.data);
@@ -967,7 +976,8 @@ check_primary_child_nodes(t_child_node_info_list *local_child_nodes)
PQExpBufferData event_details; PQExpBufferData event_details;
initPQExpBuffer(&event_details); initPQExpBuffer(&event_details);
appendPQExpBuffer(&event_details, appendPQExpBuffer(&event_details,
_("node \"%s\" (ID: %i) has reconnected after %i seconds"), _("%s node \"%s\" (ID: %i) has reconnected after %i seconds"),
get_node_type_string(child_node_rec->type),
child_node_rec->node_name, child_node_rec->node_name,
child_node_rec->node_id, child_node_rec->node_id,
calculate_elapsed( child_node_rec->detached_time )); calculate_elapsed( child_node_rec->detached_time ));
@@ -993,7 +1003,8 @@ check_primary_child_nodes(t_child_node_info_list *local_child_nodes)
PQExpBufferData event_details; PQExpBufferData event_details;
initPQExpBuffer(&event_details); initPQExpBuffer(&event_details);
appendPQExpBuffer(&event_details, appendPQExpBuffer(&event_details,
_("new node \"%s\" (ID: %i) has connected"), _("new node %s \"%s\" (ID: %i) has connected"),
get_node_type_string(child_node_rec->type),
child_node_rec->node_name, child_node_rec->node_name,
child_node_rec->node_id); child_node_rec->node_id);
log_notice("%s", event_details.data); log_notice("%s", event_details.data);
@@ -4938,12 +4949,14 @@ check_witness_attached(t_node_info *node_info, bool startup)
static t_child_node_info * static t_child_node_info *
append_child_node_record(t_child_node_info_list *nodes, int node_id, const char *node_name, NodeAttached attached) append_child_node_record(t_child_node_info_list *nodes, int node_id, const char *node_name, t_server_type type, NodeAttached attached)
{ {
t_child_node_info *child_node = pg_malloc0(sizeof(t_child_node_info)); t_child_node_info *child_node = pg_malloc0(sizeof(t_child_node_info));
child_node->node_id = node_id; child_node->node_id = node_id;
snprintf(child_node->node_name, sizeof(child_node->node_name), "%s", node_name); snprintf(child_node->node_name, sizeof(child_node->node_name), "%s", node_name);
child_node->type = type;
child_node->attached = attached; child_node->attached = attached;
if (nodes->tail) if (nodes->tail)