mirror of
https://github.com/postgres/postgres.git
synced 2025-06-05 23:56:58 +03:00
Accept pg_ctl timeout from the PGCTLTIMEOUT environment variable.
Many automated test suites call pg_ctl. Buildfarm members axolotl, hornet, mandrill, shearwater, sungazer and tern have failed when server shutdown took longer than the pg_ctl default 60s timeout. This addition permits slow hosts to easily raise the timeout without us editing a --timeout argument into every test suite pg_ctl call. Back-patch to 9.1 (all supported versions) for the sake of automated testing. Reviewed by Tom Lane.
This commit is contained in:
parent
24ce5754ae
commit
198242ede4
@ -360,7 +360,9 @@ PostgreSQL documentation
|
|||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
The maximum number of seconds to wait when waiting for startup or
|
The maximum number of seconds to wait when waiting for startup or
|
||||||
shutdown to complete. The default is 60 seconds.
|
shutdown to complete. Defaults to the value of the
|
||||||
|
<envar>PGCTLTIMEOUT</> environment variable or, if not set, to 60
|
||||||
|
seconds.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
@ -468,6 +470,17 @@ PostgreSQL documentation
|
|||||||
<title>Environment</title>
|
<title>Environment</title>
|
||||||
|
|
||||||
<variablelist>
|
<variablelist>
|
||||||
|
<varlistentry>
|
||||||
|
<term><envar>PGCTLTIMEOUT</envar></term>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Default limit on the number of seconds to wait when waiting for startup
|
||||||
|
or shutdown to complete. If not set, the default is 60 seconds.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><envar>PGDATA</envar></term>
|
<term><envar>PGDATA</envar></term>
|
||||||
|
|
||||||
|
@ -79,6 +79,7 @@ typedef enum
|
|||||||
static bool do_wait = false;
|
static bool do_wait = false;
|
||||||
static bool wait_set = false;
|
static bool wait_set = false;
|
||||||
static int wait_seconds = DEFAULT_WAIT;
|
static int wait_seconds = DEFAULT_WAIT;
|
||||||
|
static bool wait_seconds_arg = false;
|
||||||
static bool silent_mode = false;
|
static bool silent_mode = false;
|
||||||
static ShutdownMode shutdown_mode = SMART_MODE;
|
static ShutdownMode shutdown_mode = SMART_MODE;
|
||||||
static int sig = SIGTERM; /* default */
|
static int sig = SIGTERM; /* default */
|
||||||
@ -1379,7 +1380,8 @@ pgwin32_CommandLine(bool registration)
|
|||||||
if (registration && do_wait)
|
if (registration && do_wait)
|
||||||
appendPQExpBuffer(cmdLine, " -w");
|
appendPQExpBuffer(cmdLine, " -w");
|
||||||
|
|
||||||
if (registration && wait_seconds != DEFAULT_WAIT)
|
/* Don't propagate a value from an environment variable. */
|
||||||
|
if (registration && wait_seconds_arg && wait_seconds != DEFAULT_WAIT)
|
||||||
appendPQExpBuffer(cmdLine, " -t %d", wait_seconds);
|
appendPQExpBuffer(cmdLine, " -t %d", wait_seconds);
|
||||||
|
|
||||||
if (registration && silent_mode)
|
if (registration && silent_mode)
|
||||||
@ -2214,6 +2216,7 @@ main(int argc, char **argv)
|
|||||||
{NULL, 0, NULL, 0}
|
{NULL, 0, NULL, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
char *env_wait;
|
||||||
int option_index;
|
int option_index;
|
||||||
int c;
|
int c;
|
||||||
pgpid_t killproc = 0;
|
pgpid_t killproc = 0;
|
||||||
@ -2265,6 +2268,10 @@ main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
env_wait = getenv("PGCTLTIMEOUT");
|
||||||
|
if (env_wait != NULL)
|
||||||
|
wait_seconds = atoi(env_wait);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 'Action' can be before or after args so loop over both. Some
|
* 'Action' can be before or after args so loop over both. Some
|
||||||
* getopt_long() implementations will reorder argv[] to place all flags
|
* getopt_long() implementations will reorder argv[] to place all flags
|
||||||
@ -2334,6 +2341,7 @@ main(int argc, char **argv)
|
|||||||
break;
|
break;
|
||||||
case 't':
|
case 't':
|
||||||
wait_seconds = atoi(optarg);
|
wait_seconds = atoi(optarg);
|
||||||
|
wait_seconds_arg = true;
|
||||||
break;
|
break;
|
||||||
case 'U':
|
case 'U':
|
||||||
if (strchr(optarg, '\\'))
|
if (strchr(optarg, '\\'))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user