From 6e414a171e8a91966b10ecd14aa367422870bdd2 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Sat, 10 Nov 2007 21:48:51 +0000 Subject: [PATCH] Add pg_ctl -t/timeout parameter to control amount of time to wait for start/shutdown. --- doc/src/sgml/ref/pg_ctl-ref.sgml | 29 ++++++++++++++++++++++++++--- src/bin/pg_ctl/pg_ctl.c | 15 ++++++++++----- 2 files changed, 36 insertions(+), 8 deletions(-) diff --git a/doc/src/sgml/ref/pg_ctl-ref.sgml b/doc/src/sgml/ref/pg_ctl-ref.sgml index 437281c26c0..f4200718c7a 100644 --- a/doc/src/sgml/ref/pg_ctl-ref.sgml +++ b/doc/src/sgml/ref/pg_ctl-ref.sgml @@ -1,5 +1,5 @@ @@ -21,9 +21,11 @@ PostgreSQL documentation + pg_ctl start -w + -t seconds -s -D datadir -l filename @@ -31,9 +33,11 @@ PostgreSQL documentation -p path -c + pg_ctl stop -W + -t seconds -s -D datadir -m @@ -44,9 +48,11 @@ PostgreSQL documentation + pg_ctl restart -w + -t seconds -s -D datadir -c @@ -59,20 +65,24 @@ PostgreSQL documentation -o options + pg_ctl reload -s -D datadir + pg_ctl status -D datadir + pg_ctl kill signal_name process_id + pg_ctl register -N servicename @@ -80,11 +90,14 @@ PostgreSQL documentation -P password -D datadir -w + -t seconds -o options + pg_ctl unregister -N servicename + @@ -261,12 +274,22 @@ PostgreSQL documentation + + + + + The number of seconds to wait when waiting for start or shutdown + to complete. + + + + - Wait for the start or shutdown to complete. Times out after - 60 seconds. This is the default for shutdowns. A successful + Wait for the start or shutdown to complete. The default wait time + is 60 seconds. This is the default option for shutdowns. A successful shutdown is indicated by removal of the PID file. For starting up, a successful psql -l indicates success. pg_ctl will attempt to diff --git a/src/bin/pg_ctl/pg_ctl.c b/src/bin/pg_ctl/pg_ctl.c index 95adf93b2dc..83f4c862633 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-2007, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/bin/pg_ctl/pg_ctl.c,v 1.85 2007/10/31 10:55:25 petere Exp $ + * $PostgreSQL: pgsql/src/bin/pg_ctl/pg_ctl.c,v 1.86 2007/11/10 21:48:51 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -1465,21 +1465,22 @@ do_help(void) printf(_("%s is a utility to start, stop, restart, reload configuration files,\n" "report the status of a PostgreSQL server, or signal a PostgreSQL process.\n\n"), progname); printf(_("Usage:\n")); - printf(_(" %s start [-w] [-D DATADIR] [-s] [-l FILENAME] [-o \"OPTIONS\"]\n"), progname); + printf(_(" %s start [-w] [-t secs] [-D DATADIR] [-s] [-l FILENAME] [-o \"OPTIONS\"]\n"), progname); printf(_(" %s stop [-W] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n"), progname); - printf(_(" %s restart [-w] [-D DATADIR] [-s] [-m SHUTDOWN-MODE] [-o \"OPTIONS\"]\n"), progname); + printf(_(" %s restart [-w] [-t secs] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n [-o \"OPTIONS\"]\n"), progname); printf(_(" %s reload [-D DATADIR] [-s]\n"), progname); printf(_(" %s status [-D DATADIR]\n"), progname); printf(_(" %s kill SIGNALNAME PID\n"), progname); #if defined(WIN32) || defined(__CYGWIN__) printf(_(" %s register [-N SERVICENAME] [-U USERNAME] [-P PASSWORD] [-D DATADIR]\n" - " [-w] [-o \"OPTIONS\"]\n"), progname); + " [-w] [-t timeout] [-o \"OPTIONS\"]\n"), progname); printf(_(" %s unregister [-N SERVICENAME]\n"), progname); #endif printf(_("\nCommon options:\n")); printf(_(" -D, --pgdata DATADIR location of the database storage area\n")); printf(_(" -s, --silent only print errors, no informational messages\n")); + printf(_(" -t secs seconds to wait when using -w option\n")); printf(_(" -w wait until operation completes\n")); printf(_(" -W do not wait until operation completes\n")); printf(_(" --help show this help, then exit\n")); @@ -1592,6 +1593,7 @@ main(int argc, char **argv) {"mode", required_argument, NULL, 'm'}, {"pgdata", required_argument, NULL, 'D'}, {"silent", no_argument, NULL, 's'}, + {"timeout", required_argument, NULL, 't'}, {"core-files", no_argument, NULL, 'c'}, {NULL, 0, NULL, 0} }; @@ -1657,7 +1659,7 @@ main(int argc, char **argv) /* process command-line options */ while (optind < argc) { - while ((c = getopt_long(argc, argv, "cD:l:m:N:o:p:P:sU:wW", long_options, &option_index)) != -1) + while ((c = getopt_long(argc, argv, "cD:l:m:N:o:p:P:st:U:wW", long_options, &option_index)) != -1) { switch (c) { @@ -1704,6 +1706,9 @@ main(int argc, char **argv) case 's': silent_mode = true; break; + case 't': + wait_seconds = atoi(optarg); + break; case 'U': if (strchr(optarg, '\\')) register_username = xstrdup(optarg);