diff --git a/dbutils.c b/dbutils.c index 7ccca6fb..ce3e1401 100644 --- a/dbutils.c +++ b/dbutils.c @@ -285,7 +285,7 @@ get_cluster_size(PGconn *conn) * connection string is placed there. */ PGconn * -getMasterConnection(PGconn *standby_conn, char *schema, int id, char *cluster, +getMasterConnection(PGconn *standby_conn, char *schema, char *cluster, int *master_id, char *master_conninfo_out) { PGconn *master_conn = NULL; @@ -323,8 +323,8 @@ getMasterConnection(PGconn *standby_conn, char *schema, int id, char *cluster, cluster); sqlquery_snprintf(sqlquery, "SELECT id, conninfo FROM %s.repl_nodes " - " WHERE cluster = '%s' and id <> %d and not witness", - schema_quoted, cluster, id); + " WHERE cluster = '%s' and not witness", + schema_quoted, cluster); res1 = PQexec(standby_conn, sqlquery); if (PQresultStatus(res1) != PGRES_TUPLES_OK) diff --git a/dbutils.h b/dbutils.h index 5ed35dec..fe3c0237 100644 --- a/dbutils.h +++ b/dbutils.h @@ -33,7 +33,7 @@ char *pg_version(PGconn *conn, char* major_version); bool guc_setted(PGconn *conn, const char *parameter, const char *op, const char *value); const char *get_cluster_size(PGconn *conn); -PGconn *getMasterConnection(PGconn *standby_conn, char *schema, int id, char *cluster, +PGconn *getMasterConnection(PGconn *standby_conn, char *schema, char *cluster, int *master_id, char *master_conninfo_out); int wait_connection_availability(PGconn *conn, int timeout); diff --git a/repmgr.c b/repmgr.c index 9d3edb6a..a65d3559 100644 --- a/repmgr.c +++ b/repmgr.c @@ -491,7 +491,7 @@ do_master_register(void) int id; /* Ensure there isn't any other master already registered */ - master_conn = getMasterConnection(conn, repmgr_schema, options.node, + master_conn = getMasterConnection(conn, repmgr_schema, options.cluster_name, &id,NULL); if (master_conn != NULL) { @@ -612,7 +612,7 @@ do_standby_register(void) /* check if there is a master in this cluster */ log_info(_("%s connecting to master database\n"), progname); - master_conn = getMasterConnection(conn, repmgr_schema, options.node, options.cluster_name, + master_conn = getMasterConnection(conn, repmgr_schema, options.cluster_name, &master_id, NULL); if (!master_conn) { @@ -1204,7 +1204,7 @@ do_standby_promote(void) } /* we also need to check if there isn't any master already */ - old_master_conn = getMasterConnection(conn, repmgr_schema, options.node, options.cluster_name, + old_master_conn = getMasterConnection(conn, repmgr_schema, options.cluster_name, &old_master_id, NULL); if (old_master_conn != NULL) { @@ -1309,7 +1309,7 @@ do_standby_follow(void) /* we also need to check if there is any master in the cluster */ log_info(_("%s connecting to master database\n"), progname); - master_conn = getMasterConnection(conn, repmgr_schema, options.node, + master_conn = getMasterConnection(conn, repmgr_schema, options.cluster_name, &master_id,(char *) &master_conninfo); if (master_conn == NULL) { diff --git a/repmgrd.c b/repmgrd.c index 467b732a..e89e196c 100644 --- a/repmgrd.c +++ b/repmgrd.c @@ -257,7 +257,7 @@ main(int argc, char **argv) /* I need the id of the primary as well as a connection to it */ log_info(_("%s Connecting to primary for cluster '%s'\n"), progname, local_options.cluster_name); - primaryConn = getMasterConnection(myLocalConn, repmgr_schema, local_options.node, + primaryConn = getMasterConnection(myLocalConn, repmgr_schema, local_options.cluster_name, &primary_options.node, NULL); if (primaryConn == NULL) @@ -428,7 +428,7 @@ StandbyMonitor(void) log_err(_("We couldn't reconnect to master. Now checking if another node has been promoted.\n")); for (connection_retries = 0; connection_retries < 6; connection_retries++) { - primaryConn = getMasterConnection(myLocalConn, repmgr_schema, local_options.node, + primaryConn = getMasterConnection(myLocalConn, repmgr_schema, local_options.cluster_name, &primary_options.node, NULL); if (PQstatus(primaryConn) == CONNECTION_OK) {