aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNoah Misch <noah@leadboat.com>2016-02-10 20:34:02 -0500
committerNoah Misch <noah@leadboat.com>2016-02-10 20:34:02 -0500
commit2ffa86962077c588d8bdf6244e2ef960338d3883 (patch)
tree3721fd76a645fef5c524eb4794fa2410e51feaf3 /src
parent51e78ab4ff3282963f5e8ba2633040829413aefa (diff)
downloadpostgresql-2ffa86962077c588d8bdf6244e2ef960338d3883.tar.gz
postgresql-2ffa86962077c588d8bdf6244e2ef960338d3883.zip
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.
Diffstat (limited to 'src')
-rw-r--r--src/bin/pg_ctl/pg_ctl.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/bin/pg_ctl/pg_ctl.c b/src/bin/pg_ctl/pg_ctl.c
index 9da38c4e6f0..bae6c22a813 100644
--- a/src/bin/pg_ctl/pg_ctl.c
+++ b/src/bin/pg_ctl/pg_ctl.c
@@ -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, '\\'))