Add diagnostic option "repmgr node check --has-passfile"

This checks if the active libpq version (9.6 and later) has the
"passfile" option, and returns 0 if present, 1 if not.
`
This commit is contained in:
Ian Barwick
2017-12-05 12:53:04 +09:00
parent 6e9e4543e8
commit 8c121da8a1
5 changed files with 27 additions and 5 deletions

View File

@@ -700,7 +700,7 @@ has_passfile(void)
PQconninfoFree(defs);
return has_passfile;
return has_passfile;
}

View File

@@ -564,6 +564,15 @@ do_node_check(void)
CheckStatusListCell *cell = NULL;
/* internal */
if (runtime_options.has_passfile == true)
{
return_code = has_passfile() ? 0 : 1;
exit(return_code);
}
if (strlen(config_file_options.conninfo))
conn = establish_db_connection(config_file_options.conninfo, true);
else
@@ -587,8 +596,8 @@ do_node_check(void)
if (runtime_options.archive_ready == true)
{
return_code = do_node_check_archive_ready(conn,
runtime_options.output_mode,
NULL);
runtime_options.output_mode,
NULL);
PQfinish(conn);
exit(return_code);
}

View File

@@ -101,6 +101,7 @@ typedef struct
bool replication_lag;
bool role;
bool slots;
bool has_passfile;
/* "node join" options */
char config_files[MAXLEN];
@@ -151,7 +152,7 @@ typedef struct
/* "node status" options */ \
false, \
/* "node check" options */ \
false, false, false, false, false, \
false, false, false, false, false, false, \
/* "node join" options */ \
"", \
/* "node service" options */ \

View File

@@ -447,6 +447,10 @@ main(int argc, char **argv)
runtime_options.slots = true;
break;
case OPT_HAS_PASSFILE:
runtime_options.has_passfile = true;
break;
/*--------------------
* "node rejoin" options
*--------------------
@@ -1316,7 +1320,7 @@ check_cli_parameters(const int action)
/*
* XXX if -D/--pgdata provided, and also
* config_file_options.pgdaga, warn -D/--pgdata will be
* config_file_options.pgdata, warn -D/--pgdata will be
* ignored
*/
@@ -1356,6 +1360,12 @@ check_cli_parameters(const int action)
}
}
break;
case NODE_CHECK:
if (runtime_options.has_passfile == true)
{
config_file_required = false;
}
break;
case NODE_STATUS:
if (runtime_options.node_id != UNKNOWN_NODE_ID)
{

View File

@@ -81,6 +81,7 @@
#define OPT_DOWNSTREAM 1032
#define OPT_SLOTS 1033
#define OPT_CONFIG_ARCHIVE_DIR 1034
#define OPT_HAS_PASSFILE 1035
/* deprecated since 3.3 */
#define OPT_DATA_DIR 999
#define OPT_NO_CONNINFO_PASSWORD 998
@@ -153,6 +154,7 @@ static struct option long_options[] =
{"replication-lag", no_argument, NULL, OPT_REPLICATION_LAG},
{"role", no_argument, NULL, OPT_ROLE},
{"slots", no_argument, NULL, OPT_SLOTS},
{"has-passfile", no_argument, NULL, OPT_HAS_PASSFILE},
/* "node rejoin" options */
{"config-files", required_argument, NULL, OPT_CONFIG_FILES},