From d3c2a0f50522ae16ca743c2cd6b58354f78240a0 Mon Sep 17 00:00:00 2001 From: Ian Barwick Date: Mon, 24 Jul 2017 18:56:18 +0900 Subject: [PATCH] repmgrd: record bdr_recovery event on the node which was up Attempting to write on the recovered node may result in an error if it hadn't already started up. --- repmgrd-bdr.c | 49 +++++++++++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/repmgrd-bdr.c b/repmgrd-bdr.c index 361ad0e9..22cc5233 100644 --- a/repmgrd-bdr.c +++ b/repmgrd-bdr.c @@ -230,7 +230,6 @@ monitor_bdr(void) /* degraded monitoring */ if (is_server_available(cell->node_info->conninfo) == true) { - log_notice(_("monitored node %i has recovered"), cell->node_info->node_id); do_bdr_recovery(&nodes, cell->node_info); } @@ -470,29 +469,35 @@ do_bdr_recovery(NodeInfoList *nodes, t_node_info *monitored_node) monitored_node->monitoring_state = MS_NORMAL; - if (config_file_options.bdr_active_node_recovery == true) - { - event_info.conninfo_str = monitored_node->conninfo; - event_info.node_name = monitored_node->node_name; + log_notice("%s", event_details.data); - create_event_notification_extended( - local_conn, - &config_file_options, - config_file_options.node_id, - "bdr_recovery", - true, - event_details.data, - &event_info); - } - else + /* generate the event on the currently active node only */ + if (monitored_node->node_id != local_node_info.node_id) { - create_event_record( - local_conn, - &config_file_options, - config_file_options.node_id, - "bdr_recovery", - true, - event_details.data); + if (config_file_options.bdr_active_node_recovery == true) + { + event_info.conninfo_str = monitored_node->conninfo; + event_info.node_name = monitored_node->node_name; + + create_event_notification_extended( + local_conn, + &config_file_options, + config_file_options.node_id, + "bdr_recovery", + true, + event_details.data, + &event_info); + } + else + { + create_event_record( + local_conn, + &config_file_options, + config_file_options.node_id, + "bdr_recovery", + true, + event_details.data); + } } termPQExpBuffer(&event_details);