Re: [HACKERS] pg_ctl configurable timeout - Mailing list pgsql-patches
From | Bruce Momjian |
---|---|
Subject | Re: [HACKERS] pg_ctl configurable timeout |
Date | |
Msg-id | 200711102153.lAALraS08951@momjian.us Whole thread Raw |
List | pgsql-patches |
bruce wrote: > Tom Lane wrote: > > Andrew Dunstan <andrew@dunslane.net> writes: > > > Bruce Momjian wrote: > > >> How about an environment variable to control the timeout? Is that > > >> cleaner? > > > > > I don't see why it should be. I think Peter's --timeout suggestion > > > should be just fine. > > > > I wrote a moment ago that the user can hit control-C when he gets bored, > > but that argument only works for interactive use of pg_ctl. In a script > > I think you'd want a --timeout option. I don't see the advantage of > > an environment variable in either scenario. > > I have implemented pg_ctl -t secs timeout option with the attached > patch. It still defaults to 60. I did not code the 'ping' option. Modified patch applied. -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://postgres.enterprisedb.com + If your life is a hard drive, Christ can be your backup. + Index: doc/src/sgml/ref/pg_ctl-ref.sgml =================================================================== RCS file: /cvsroot/pgsql/doc/src/sgml/ref/pg_ctl-ref.sgml,v retrieving revision 1.43 diff -c -c -r1.43 pg_ctl-ref.sgml *** doc/src/sgml/ref/pg_ctl-ref.sgml 10 Nov 2007 14:07:18 -0000 1.43 --- doc/src/sgml/ref/pg_ctl-ref.sgml 10 Nov 2007 21:42:26 -0000 *************** *** 21,29 **** --- 21,31 ---- <refsynopsisdiv> <cmdsynopsis> + <command>pg_ctl</command> <arg choice="plain">start</arg> <arg>-w</arg> + <arg>-t <replaceable>seconds</replaceable></arg> <arg>-s</arg> <arg>-D <replaceable>datadir</replaceable></arg> <arg>-l <replaceable>filename</replaceable></arg> *************** *** 31,39 **** --- 33,43 ---- <arg>-p <replaceable>path</replaceable></arg> <arg>-c</arg> <sbr> + <command>pg_ctl</command> <arg choice="plain">stop</arg> <arg>-W</arg> + <arg>-t <replaceable>seconds</replaceable></arg> <arg>-s</arg> <arg>-D <replaceable>datadir</replaceable></arg> <arg>-m *************** *** 44,52 **** --- 48,58 ---- </group> </arg> <sbr> + <command>pg_ctl</command> <arg choice="plain">restart</arg> <arg>-w</arg> + <arg>-t <replaceable>seconds</replaceable></arg> <arg>-s</arg> <arg>-D <replaceable>datadir</replaceable></arg> <arg>-c</arg> *************** *** 59,78 **** --- 65,88 ---- </arg> <arg>-o <replaceable>options</replaceable></arg> <sbr> + <command>pg_ctl</command> <arg choice="plain">reload</arg> <arg>-s</arg> <arg>-D <replaceable>datadir</replaceable></arg> <sbr> + <command>pg_ctl</command> <arg choice="plain">status</arg> <arg>-D <replaceable>datadir</replaceable></arg> <sbr> + <command>pg_ctl</command> <arg choice="plain">kill</arg> <arg><replaceable>signal_name</replaceable></arg> <arg><replaceable>process_id</replaceable></arg> <sbr> + <command>pg_ctl</command> <arg choice="plain">register</arg> <arg>-N <replaceable>servicename</replaceable></arg> *************** *** 80,90 **** --- 90,103 ---- <arg>-P <replaceable>password</replaceable></arg> <arg>-D <replaceable>datadir</replaceable></arg> <arg>-w</arg> + <arg>-t <replaceable>seconds</replaceable></arg> <arg>-o <replaceable>options</replaceable></arg> <sbr> + <command>pg_ctl</command> <arg choice="plain">unregister</arg> <arg>-N <replaceable>servicename</replaceable></arg> + </cmdsynopsis> </refsynopsisdiv> *************** *** 262,272 **** </varlistentry> <varlistentry> <term><option>-w</option></term> <listitem> <para> ! Wait for the start or shutdown to complete. Times out after ! 60 seconds. This is the default for shutdowns. A successful shutdown is indicated by removal of the <acronym>PID</acronym> file. For starting up, a successful <command>psql -l</command> indicates success. <command>pg_ctl</command> will attempt to --- 275,295 ---- </varlistentry> <varlistentry> + <term><option>-t</option></term> + <listitem> + <para> + The number of seconds to wait when waiting for start or shutdown + to complete. + </para> + </listitem> + </varlistentry> + + <varlistentry> <term><option>-w</option></term> <listitem> <para> ! 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 <acronym>PID</acronym> file. For starting up, a successful <command>psql -l</command> indicates success. <command>pg_ctl</command> will attempt to Index: src/bin/pg_ctl/pg_ctl.c =================================================================== RCS file: /cvsroot/pgsql/src/bin/pg_ctl/pg_ctl.c,v retrieving revision 1.85 diff -c -c -r1.85 pg_ctl.c *** src/bin/pg_ctl/pg_ctl.c 31 Oct 2007 10:55:25 -0000 1.85 --- src/bin/pg_ctl/pg_ctl.c 10 Nov 2007 21:42:27 -0000 *************** *** 1465,1485 **** 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 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 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); 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(_(" -w wait until operation completes\n")); printf(_(" -W do not wait until operation completes\n")); printf(_(" --help show this help, then exit\n")); --- 1465,1486 ---- 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] [-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] [-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] [-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,1597 **** --- 1593,1599 ---- {"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,1663 **** /* 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) { switch (c) { --- 1659,1665 ---- /* process command-line options */ while (optind < argc) { ! while ((c = getopt_long(argc, argv, "cD:l:m:N:o:p:P:st:U:wW", long_options, &option_index)) != -1) { switch (c) { *************** *** 1704,1709 **** --- 1706,1714 ---- case 's': silent_mode = true; break; + case 't': + wait_seconds = atoi(optarg); + break; case 'U': if (strchr(optarg, '\\')) register_username = xstrdup(optarg);
pgsql-patches by date: