Re: [HACKERS] pg_ctl configurable timeout - Mailing list pgsql-patches

From Bruce Momjian
Subject Re: [HACKERS] pg_ctl configurable timeout
Date
Msg-id 200711100506.lAA56FV11240@momjian.us
Whole thread Raw
List pgsql-patches
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.

--
  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.42
diff -c -c -r1.42 pg_ctl-ref.sgml
*** doc/src/sgml/ref/pg_ctl-ref.sgml    10 Nov 2007 04:52:17 -0000    1.42
--- doc/src/sgml/ref/pg_ctl-ref.sgml    10 Nov 2007 05:03:03 -0000
***************
*** 24,29 ****
--- 24,30 ----
     <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>
***************
*** 47,52 ****
--- 48,54 ----
     <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>
***************
*** 80,85 ****
--- 82,88 ----
     <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>
***************
*** 261,271 ****
       </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
--- 264,284 ----
       </varlistentry>

       <varlistentry>
+       <term><option>-t</option></term>
+       <listitem>
+        <para>
+         Seconds to wait for start or shutdown to complete when
+         the <option>-w</> option is used.
+        </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 05:03:04 -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,1487 ----
      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 ****
--- 1594,1600 ----
          {"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}
      };
***************
*** 1704,1709 ****
--- 1707,1715 ----
                  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:

Previous
From: Joe Conway
Date:
Subject: Re: [GENERAL] Crosstab Problems
Next
From: Albert Cervera i Areny
Date:
Subject: Re: Contrib docs v1