mirror of
https://github.com/EnterpriseDB/repmgr.git
synced 2026-03-27 17:06:29 +00:00
Wrap use of PQconnectdbParams, add proper error
checking and logging when the connection fails.
This commit is contained in:
20
dbutils.c
20
dbutils.c
@@ -43,6 +43,26 @@ establishDBConnection(const char *conninfo, const bool exit_on_error)
|
|||||||
return conn;
|
return conn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PGconn *
|
||||||
|
establishDBConnectionByParams(const char *keywords[], const char *values[],const bool exit_on_error)
|
||||||
|
{
|
||||||
|
/* Make a connection to the database */
|
||||||
|
PGconn *conn = PQconnectdbParams(keywords, values, true);
|
||||||
|
|
||||||
|
/* Check to see that the backend connection was successfully made */
|
||||||
|
if ((PQstatus(conn) != CONNECTION_OK))
|
||||||
|
{
|
||||||
|
log_err(_("Connection to database failed: %s\n"),
|
||||||
|
PQerrorMessage(conn));
|
||||||
|
if (exit_on_error)
|
||||||
|
{
|
||||||
|
PQfinish(conn);
|
||||||
|
exit(ERR_DB_CON);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return conn;
|
||||||
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
is_standby(PGconn *conn)
|
is_standby(PGconn *conn)
|
||||||
|
|||||||
@@ -21,6 +21,9 @@
|
|||||||
#define _REPMGR_DBUTILS_H_
|
#define _REPMGR_DBUTILS_H_
|
||||||
|
|
||||||
PGconn *establishDBConnection(const char *conninfo, const bool exit_on_error);
|
PGconn *establishDBConnection(const char *conninfo, const bool exit_on_error);
|
||||||
|
PGconn *establishDBConnectionByParams(const char *keywords[],
|
||||||
|
const char *values[],
|
||||||
|
const bool exit_on_error);
|
||||||
bool is_standby(PGconn *conn);
|
bool is_standby(PGconn *conn);
|
||||||
char *pg_version(PGconn *conn, char* major_version);
|
char *pg_version(PGconn *conn, char* major_version);
|
||||||
bool guc_setted(PGconn *conn, const char *parameter, const char *op,
|
bool guc_setted(PGconn *conn, const char *parameter, const char *op,
|
||||||
|
|||||||
26
repmgr.c
26
repmgr.c
@@ -732,13 +732,7 @@ do_standby_clone(void)
|
|||||||
|
|
||||||
/* We need to connect to check configuration and start a backup */
|
/* We need to connect to check configuration and start a backup */
|
||||||
log_info(_("%s connecting to master database\n"), progname);
|
log_info(_("%s connecting to master database\n"), progname);
|
||||||
conn = PQconnectdbParams(keywords, values, true);
|
conn=establishDBConnectionByParams(keywords,values,true);
|
||||||
if (!conn)
|
|
||||||
{
|
|
||||||
log_err(_("%s: could not connect to master\n"),
|
|
||||||
progname);
|
|
||||||
exit(ERR_BAD_CONFIG);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* primary should be v9 or better */
|
/* primary should be v9 or better */
|
||||||
log_info(_("%s connected to master, checking its state\n"), progname);
|
log_info(_("%s connected to master, checking its state\n"), progname);
|
||||||
@@ -1011,17 +1005,17 @@ do_standby_clone(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
stop_backup:
|
stop_backup:
|
||||||
/* inform the master that we have finished the backup */
|
|
||||||
conn = PQconnectdbParams(keywords, values, true);
|
/*
|
||||||
if (!conn)
|
* Inform the master that we have finished the backup.
|
||||||
{
|
*
|
||||||
log_err(_("%s: could not connect to master\n"),
|
* Don't have this one exit if it fails, so that a more informative
|
||||||
progname);
|
* error message will also appear about the backup not being stopped.
|
||||||
exit(ERR_BAD_RSYNC);
|
*/
|
||||||
}
|
log_info(_("%s connecting to master database to stop backup\n"), progname);
|
||||||
|
conn=establishDBConnectionByParams(keywords,values,false);
|
||||||
|
|
||||||
log_notice("Finishing backup...\n");
|
log_notice("Finishing backup...\n");
|
||||||
|
|
||||||
sqlquery_snprintf(sqlquery, "SELECT pg_xlogfile_name(pg_stop_backup())");
|
sqlquery_snprintf(sqlquery, "SELECT pg_xlogfile_name(pg_stop_backup())");
|
||||||
log_debug("standby clone: %s\n", sqlquery);
|
log_debug("standby clone: %s\n", sqlquery);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user