mirror of
https://github.com/EnterpriseDB/repmgr.git
synced 2026-03-22 22:56:29 +00:00
node check: add option --db-connection
This is intended for diagnostic purposes, primarily when diagnosing the connection parameters used when repmgr is being executed on a remote node.
This commit is contained in:
@@ -53,6 +53,8 @@ static CheckStatus do_node_check_slots(PGconn *conn, OutputMode mode, t_node_inf
|
|||||||
static CheckStatus do_node_check_missing_slots(PGconn *conn, OutputMode mode, t_node_info *node_info, CheckStatusList *list_output);
|
static CheckStatus do_node_check_missing_slots(PGconn *conn, OutputMode mode, t_node_info *node_info, CheckStatusList *list_output);
|
||||||
static CheckStatus do_node_check_data_directory(PGconn *conn, OutputMode mode, t_node_info *node_info, CheckStatusList *list_output);
|
static CheckStatus do_node_check_data_directory(PGconn *conn, OutputMode mode, t_node_info *node_info, CheckStatusList *list_output);
|
||||||
static CheckStatus do_node_check_replication_config_owner(PGconn *conn, OutputMode mode, t_node_info *node_info, CheckStatusList *list_output);
|
static CheckStatus do_node_check_replication_config_owner(PGconn *conn, OutputMode mode, t_node_info *node_info, CheckStatusList *list_output);
|
||||||
|
static CheckStatus do_node_check_db_connection(PGconn *conn, OutputMode mode);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* NODE STATUS
|
* NODE STATUS
|
||||||
*
|
*
|
||||||
@@ -734,12 +736,18 @@ do_node_check(void)
|
|||||||
exit(return_code);
|
exit(return_code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* for use by "standby switchover" */
|
||||||
if (runtime_options.replication_connection == true)
|
if (runtime_options.replication_connection == true)
|
||||||
{
|
{
|
||||||
do_node_check_replication_connection();
|
do_node_check_replication_connection();
|
||||||
exit(SUCCESS);
|
exit(SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (runtime_options.db_connection == true)
|
||||||
|
{
|
||||||
|
exit_on_connection_error = false;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If --optformat was provided, we'll assume this is a remote invocation
|
* If --optformat was provided, we'll assume this is a remote invocation
|
||||||
* and instead of exiting with an error, we'll return an error string to
|
* and instead of exiting with an error, we'll return an error string to
|
||||||
@@ -750,6 +758,7 @@ do_node_check(void)
|
|||||||
exit_on_connection_error = false;
|
exit_on_connection_error = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (config_file_options.conninfo[0] != '\0')
|
if (config_file_options.conninfo[0] != '\0')
|
||||||
{
|
{
|
||||||
t_conninfo_param_list node_conninfo = T_CONNINFO_PARAM_LIST_INITIALIZER;
|
t_conninfo_param_list node_conninfo = T_CONNINFO_PARAM_LIST_INITIALIZER;
|
||||||
@@ -799,6 +808,17 @@ do_node_check(void)
|
|||||||
conn = establish_db_connection_by_params(&source_conninfo, exit_on_connection_error);
|
conn = establish_db_connection_by_params(&source_conninfo, exit_on_connection_error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* --db-connection option provided
|
||||||
|
*/
|
||||||
|
if (runtime_options.db_connection == true)
|
||||||
|
{
|
||||||
|
return_code = do_node_check_db_connection(conn, runtime_options.output_mode);
|
||||||
|
PQfinish(conn);
|
||||||
|
exit(return_code);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If we've reached here, and the connection is invalid, then --optformat was provided
|
* If we've reached here, and the connection is invalid, then --optformat was provided
|
||||||
*/
|
*/
|
||||||
@@ -2152,6 +2172,72 @@ CheckStatus do_node_check_replication_config_owner(PGconn *conn, OutputMode mode
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is not included in the general list output
|
||||||
|
*/
|
||||||
|
static CheckStatus
|
||||||
|
do_node_check_db_connection(PGconn *conn, OutputMode mode)
|
||||||
|
{
|
||||||
|
CheckStatus status = CHECK_STATUS_OK;
|
||||||
|
PQExpBufferData details;
|
||||||
|
|
||||||
|
if (mode == OM_CSV)
|
||||||
|
{
|
||||||
|
log_error(_("--csv output not provided with --db-connection option"));
|
||||||
|
PQfinish(conn);
|
||||||
|
exit(ERR_BAD_CONFIG);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* This check is for configuration diagnostics only */
|
||||||
|
if (mode == OM_NAGIOS)
|
||||||
|
{
|
||||||
|
log_error(_("--nagios output not provided with --db-connection option"));
|
||||||
|
PQfinish(conn);
|
||||||
|
exit(ERR_BAD_CONFIG);
|
||||||
|
}
|
||||||
|
|
||||||
|
initPQExpBuffer(&details);
|
||||||
|
|
||||||
|
if (PQstatus(conn) != CONNECTION_OK)
|
||||||
|
{
|
||||||
|
t_conninfo_param_list conninfo = T_CONNINFO_PARAM_LIST_INITIALIZER;
|
||||||
|
int c;
|
||||||
|
|
||||||
|
status = CHECK_STATUS_CRITICAL;
|
||||||
|
initialize_conninfo_params(&conninfo, false);
|
||||||
|
conn_to_param_list(conn, &conninfo);
|
||||||
|
|
||||||
|
appendPQExpBufferStr(&details,
|
||||||
|
"connection parameters used:");
|
||||||
|
for (c = 0; c < conninfo.size && conninfo.keywords[c] != NULL; c++)
|
||||||
|
{
|
||||||
|
if (conninfo.values[c] != NULL && conninfo.values[c][0] != '\0')
|
||||||
|
{
|
||||||
|
appendPQExpBuffer(&details,
|
||||||
|
" %s=%s",
|
||||||
|
conninfo.keywords[c], conninfo.values[c]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mode == OM_OPTFORMAT)
|
||||||
|
{
|
||||||
|
printf("--db-connection=%s\n",
|
||||||
|
output_check_status(status));
|
||||||
|
}
|
||||||
|
else if (mode == OM_TEXT)
|
||||||
|
{
|
||||||
|
printf("%s (%s)\n",
|
||||||
|
output_check_status(status),
|
||||||
|
details.data);
|
||||||
|
}
|
||||||
|
termPQExpBuffer(&details);
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
do_node_service(void)
|
do_node_service(void)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -120,6 +120,7 @@ typedef struct
|
|||||||
bool replication_connection;
|
bool replication_connection;
|
||||||
bool data_directory_config;
|
bool data_directory_config;
|
||||||
bool replication_config_owner;
|
bool replication_config_owner;
|
||||||
|
bool db_connection;
|
||||||
|
|
||||||
/* "node rejoin" options */
|
/* "node rejoin" options */
|
||||||
char config_files[MAXLEN];
|
char config_files[MAXLEN];
|
||||||
@@ -172,7 +173,7 @@ typedef struct
|
|||||||
/* "node status" options */ \
|
/* "node status" options */ \
|
||||||
false, \
|
false, \
|
||||||
/* "node check" options */ \
|
/* "node check" options */ \
|
||||||
false, false, false, false, false, false, false, false, false, false, false, \
|
false, false, false, false, false, false, false, false, false, false, false, false, \
|
||||||
/* "node rejoin" options */ \
|
/* "node rejoin" options */ \
|
||||||
"", \
|
"", \
|
||||||
/* "node service" options */ \
|
/* "node service" options */ \
|
||||||
|
|||||||
@@ -541,6 +541,10 @@ main(int argc, char **argv)
|
|||||||
runtime_options.replication_config_owner = true;
|
runtime_options.replication_config_owner = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case OPT_DB_CONNECTION:
|
||||||
|
runtime_options.db_connection = true;
|
||||||
|
break;
|
||||||
|
|
||||||
/*--------------------
|
/*--------------------
|
||||||
* "node rejoin" options
|
* "node rejoin" options
|
||||||
*--------------------
|
*--------------------
|
||||||
|
|||||||
@@ -100,6 +100,7 @@
|
|||||||
#define OPT_DETAIL 1047
|
#define OPT_DETAIL 1047
|
||||||
#define OPT_REPMGRD_FORCE_UNPAUSE 1048
|
#define OPT_REPMGRD_FORCE_UNPAUSE 1048
|
||||||
#define OPT_REPLICATION_CONFIG_OWNER 1049
|
#define OPT_REPLICATION_CONFIG_OWNER 1049
|
||||||
|
#define OPT_DB_CONNECTION 1050
|
||||||
|
|
||||||
/* deprecated since 4.0 */
|
/* deprecated since 4.0 */
|
||||||
#define OPT_CHECK_UPSTREAM_CONFIG 999
|
#define OPT_CHECK_UPSTREAM_CONFIG 999
|
||||||
@@ -189,6 +190,7 @@ static struct option long_options[] =
|
|||||||
{"replication-connection", no_argument, NULL, OPT_REPL_CONN},
|
{"replication-connection", no_argument, NULL, OPT_REPL_CONN},
|
||||||
{"data-directory-config", no_argument, NULL, OPT_DATA_DIRECTORY_CONFIG},
|
{"data-directory-config", no_argument, NULL, OPT_DATA_DIRECTORY_CONFIG},
|
||||||
{"replication-config-owner", no_argument, NULL, OPT_REPLICATION_CONFIG_OWNER},
|
{"replication-config-owner", no_argument, NULL, OPT_REPLICATION_CONFIG_OWNER},
|
||||||
|
{"db-connection", no_argument, NULL, OPT_DB_CONNECTION},
|
||||||
|
|
||||||
/* "node rejoin" options */
|
/* "node rejoin" options */
|
||||||
{"config-files", required_argument, NULL, OPT_CONFIG_FILES},
|
{"config-files", required_argument, NULL, OPT_CONFIG_FILES},
|
||||||
|
|||||||
Reference in New Issue
Block a user