diff options
| -rw-r--r-- | src/bin/pg_ctl/pg_ctl.c | 24 | 
1 files changed, 21 insertions, 3 deletions
diff --git a/src/bin/pg_ctl/pg_ctl.c b/src/bin/pg_ctl/pg_ctl.c index 810f6fef6e3..dad7e8b79df 100644 --- a/src/bin/pg_ctl/pg_ctl.c +++ b/src/bin/pg_ctl/pg_ctl.c @@ -4,7 +4,7 @@   *   * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group   * - * $PostgreSQL: pgsql/src/bin/pg_ctl/pg_ctl.c,v 1.122 2010/04/07 03:48:51 itagaki Exp $ + * $PostgreSQL: pgsql/src/bin/pg_ctl/pg_ctl.c,v 1.122.2.1 2010/09/14 08:05:54 heikki Exp $   *   *-------------------------------------------------------------------------   */ @@ -142,6 +142,7 @@ static char postopts_file[MAXPGPATH];  static char pid_file[MAXPGPATH];  static char conf_file[MAXPGPATH];  static char backup_file[MAXPGPATH]; +static char recovery_file[MAXPGPATH];  #if defined(HAVE_GETRLIMIT) && defined(RLIMIT_CORE)  static void unlimit_core_size(void); @@ -802,7 +803,15 @@ do_stop(void)  	}  	else  	{ -		if ((shutdown_mode == SMART_MODE) && (stat(backup_file, &statbuf) == 0)) +		/* +		 * If backup_label exists, an online backup is running. Warn the +		 * user that smart shutdown will wait for it to finish. However, if +		 * recovery.conf is also present, we're recovering from an online +		 * backup instead of performing one. +		 */ +		if (shutdown_mode == SMART_MODE && +			stat(backup_file, &statbuf) == 0 && +			stat(recovery_file, &statbuf) != 0)  		{  			print_msg(_("WARNING: online backup mode is active\n"  						"Shutdown will not complete until pg_stop_backup() is called.\n\n")); @@ -879,7 +888,15 @@ do_restart(void)  			exit(1);  		} -		if ((shutdown_mode == SMART_MODE) && (stat(backup_file, &statbuf) == 0)) +		/* +		 * If backup_label exists, an online backup is running. Warn the +		 * user that smart shutdown will wait for it to finish. However, if +		 * recovery.conf is also present, we're recovering from an online +		 * backup instead of performing one. +		 */ +		if (shutdown_mode == SMART_MODE && +			stat(backup_file, &statbuf) == 0 && +			stat(recovery_file, &statbuf) != 0)  		{  			print_msg(_("WARNING: online backup mode is active\n"  						"Shutdown will not complete until pg_stop_backup() is called.\n\n")); @@ -1962,6 +1979,7 @@ main(int argc, char **argv)  		snprintf(pid_file, MAXPGPATH, "%s/postmaster.pid", pg_data);  		snprintf(conf_file, MAXPGPATH, "%s/postgresql.conf", pg_data);  		snprintf(backup_file, MAXPGPATH, "%s/backup_label", pg_data); +		snprintf(recovery_file, MAXPGPATH, "%s/recovery.conf", pg_data);  	}  	switch (ctl_command)  | 
