"standby clone": fix replication slot generation

Slot on source node was being deleted even if source node is the intended
upstream node.
This commit is contained in:
Ian Barwick
2017-09-14 08:47:56 +09:00
parent 55f203a2fc
commit e040f95aaa

View File

@@ -3889,6 +3889,7 @@ run_basebackup(t_node_info *node_record)
t_node_info upstream_node_record = T_NODE_INFO_INITIALIZER;
t_replication_slot slot_info = T_REPLICATION_SLOT_INITIALIZER;
RecordStatus record_status = RECORD_NOT_FOUND;
bool slot_exists_on_upstream = false;
record_status = get_node_record(source_conn, upstream_node_id, &upstream_node_record);
@@ -3918,13 +3919,12 @@ run_basebackup(t_node_info *node_record)
_("replication slot \"%s\" aleady exists on upstream node %i"),
node_record->slot_name,
upstream_node_id);
slot_exists_on_upstream = true;
}
else
{
PQExpBufferData event_details;
log_notice(_("creating replication slot \"%s\" on upstream node %i"),
node_record->slot_name,
upstream_node_id);
@@ -3965,13 +3965,16 @@ run_basebackup(t_node_info *node_record)
if (slot_info.active == false)
{
if (drop_replication_slot(source_conn, node_record->slot_name) == true)
if (slot_exists_on_upstream == false)
{
log_notice(_("replication slot \"%s\" deleted on source node"), node_record->slot_name);
}
else
{
log_error(_("unable to delete replication slot \"%s\" on source node"), node_record->slot_name);
if (drop_replication_slot(source_conn, node_record->slot_name) == true)
{
log_notice(_("replication slot \"%s\" deleted on source node"), node_record->slot_name);
}
else
{
log_error(_("unable to delete replication slot \"%s\" on source node"), node_record->slot_name);
}
}
}