From 87ff9d09ba5766ff00eb5480b0bb2504d9b66954 Mon Sep 17 00:00:00 2001 From: Ian Barwick Date: Thu, 24 Sep 2015 16:30:08 +0900 Subject: [PATCH] Ensure --force option works with "master register" This was failing previously if repmgr was able to connect to the master database --- repmgr.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/repmgr.c b/repmgr.c index ae9992ab..c5eda413 100644 --- a/repmgr.c +++ b/repmgr.c @@ -728,9 +728,8 @@ do_master_register(void) log_info(_("master register: creating database objects inside the %s schema\n"), get_repmgr_schema()); - begin_transaction(conn); - /* ok, create the schema */ + if (!create_schema(conn)) { log_err(_("Unable to create repmgr schema - see preceding error message(s); aborting\n")); @@ -742,24 +741,28 @@ do_master_register(void) commit_transaction(conn); } - - /* Ensure there isn't any other master already registered */ master_conn = get_master_connection(conn, options.cluster_name, NULL, NULL); - if (master_conn != NULL) + + if (master_conn != NULL && !runtime_options.force) { PQfinish(master_conn); - log_warning(_("there is a master already in cluster %s\n"), + log_err(_("there is a master already in cluster %s\n"), options.cluster_name); exit(ERR_BAD_CONFIG); } + /* Delete any existing record for this node if --force set */ if (runtime_options.force) { - bool node_record_deleted = delete_node_record(conn, - options.node, - "master register"); + bool node_record_deleted; + + log_notice(_("deleting existing master record with id %i\n"), options.node); + + node_record_deleted = delete_node_record(conn, + options.node, + "master register"); if (node_record_deleted == false) {