From db69c4b3103e44749ab0f2a68f0a9af50b97f69d Mon Sep 17 00:00:00 2001 From: Ian Barwick Date: Tue, 2 May 2017 14:47:23 +0900 Subject: [PATCH] "standby clone": exit early in pg_basebackup mode if data directory is not empty --- repmgr-action-standby.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/repmgr-action-standby.c b/repmgr-action-standby.c index d4d516f5..0bc18a9a 100644 --- a/repmgr-action-standby.c +++ b/repmgr-action-standby.c @@ -568,6 +568,22 @@ check_source_server() log_hint(_("use -D/--pgdata to explicitly specify a data directory")); } + /* + * In the default pg_basebackup mode, we'll cowardly refuse to overwrite + * an existing data directory + */ + if (mode == pg_basebackup) + { + if (is_pg_dir(local_data_directory)) + { + log_error(_("target data directory appears to be a PostgreSQL data directory")); + log_detail(_("target data directory is \"%s\""), local_data_directory); + log_hint(_("ensure the target data directory is empty before running \"STANDBY CLONE\" in pg_basebackup mode")); + PQfinish(source_conn); + exit(ERR_BAD_CONFIG); + } + } + /* * Copy the source connection so that we have some default values, * particularly stuff like passwords extracted from PGPASSFILE;