mirror of
https://github.com/postgres/postgres.git
synced 2025-07-27 12:41:57 +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:
@ -72,6 +72,7 @@ typedef enum
|
||||
static bool do_wait = false;
|
||||
static bool wait_set = false;
|
||||
static int wait_seconds = DEFAULT_WAIT;
|
||||
static bool wait_seconds_arg = false;
|
||||
static bool silent_mode = false;
|
||||
static ShutdownMode shutdown_mode = FAST_MODE;
|
||||
static int sig = SIGINT; /* default */
|
||||
@ -1431,7 +1432,8 @@ pgwin32_CommandLine(bool registration)
|
||||
if (registration && do_wait)
|
||||
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);
|
||||
|
||||
if (registration && silent_mode)
|
||||
@ -2128,6 +2130,7 @@ main(int argc, char **argv)
|
||||
{NULL, 0, NULL, 0}
|
||||
};
|
||||
|
||||
char *env_wait;
|
||||
int option_index;
|
||||
int c;
|
||||
pgpid_t killproc = 0;
|
||||
@ -2178,6 +2181,10 @@ main(int argc, char **argv)
|
||||
}
|
||||
#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
|
||||
* getopt_long() implementations will reorder argv[] to place all flags
|
||||
@ -2255,6 +2262,7 @@ main(int argc, char **argv)
|
||||
break;
|
||||
case 't':
|
||||
wait_seconds = atoi(optarg);
|
||||
wait_seconds_arg = true;
|
||||
break;
|
||||
case 'U':
|
||||
if (strchr(optarg, '\\'))
|
||||
|
Reference in New Issue
Block a user