From f982708b350d8d646cd8f2455dc1f619a638a980 Mon Sep 17 00:00:00 2001 From: Ian Barwick Date: Wed, 20 Jan 2016 07:56:03 +0900 Subject: [PATCH] Add function test_db_connection() The difference between this and establish_db_connection() is that it outputs any connection failure as a [NOTICE] rather than an [ERROR]; it's intended for use in e.g. polling a server to wait for it to come up/go down, while preventing [ERROR] log lines which may cause confusion. --- dbutils.c | 28 +++++++++++++++++++++++++--- dbutils.h | 7 ++++++- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/dbutils.c b/dbutils.c index 1df56738..0f9b5bff 100644 --- a/dbutils.c +++ b/dbutils.c @@ -29,8 +29,9 @@ char repmgr_schema[MAXLEN] = ""; char repmgr_schema_quoted[MAXLEN] = ""; + PGconn * -establish_db_connection(const char *conninfo, const bool exit_on_error) +_establish_db_connection(const char *conninfo, const bool exit_on_error, const bool log_notice) { /* Make a connection to the database */ PGconn *conn = NULL; @@ -46,8 +47,16 @@ establish_db_connection(const char *conninfo, const bool exit_on_error) /* 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 (log_notice) + { + log_notice(_("connection to database failed: %s\n"), + PQerrorMessage(conn)); + } + else + { + log_err(_("connection to database failed: %s\n"), + PQerrorMessage(conn)); + } if (exit_on_error) { @@ -59,6 +68,19 @@ establish_db_connection(const char *conninfo, const bool exit_on_error) return conn; } +PGconn * +establish_db_connection(const char *conninfo, const bool exit_on_error) +{ + return _establish_db_connection(conninfo, exit_on_error, false); +} + +PGconn * +test_db_connection(const char *conninfo, const bool exit_on_error) +{ + return _establish_db_connection(conninfo, exit_on_error, true); +} + + PGconn * establish_db_connection_by_params(const char *keywords[], const char *values[], const bool exit_on_error) diff --git a/dbutils.h b/dbutils.h index 7aa4b653..ddc2906d 100644 --- a/dbutils.h +++ b/dbutils.h @@ -78,8 +78,13 @@ typedef struct s_replication_slot InvalidXLogRecPtr \ } +PGconn *_establish_db_connection(const char *conninfo, + const bool exit_on_error, + const bool log_notice); PGconn *establish_db_connection(const char *conninfo, - const bool exit_on_error); + const bool exit_on_error); +PGconn *test_db_connection(const char *conninfo, + const bool exit_on_error); PGconn *establish_db_connection_by_params(const char *keywords[], const char *values[], const bool exit_on_error);