Thread: pg_regress not waiting for postmaster to stop
Hi all, In pg_regress.c, there is the following code: static void stop_postmaster(void) { if (postmaster_running) { /* We use pg_ctl to issue the kill and wait for stop */ char buf[MAXPGPATH * 2]; int r; /* On Windows, system() seems not to force fflush, so... */ fflush(stdout); fflush(stderr); snprintf(buf, sizeof(buf), "\"%s%spg_ctl\" stop -D \"%s/data\" -w -s -m fast", bindir ? bindir : "", bindir ? "/" : "", temp_instance); Except if I am missing something, the comment mentions that we should wait for the stop but there is no -w switch in the command of pg_ctl. Doesn't the patch attached make sense? Regards -- Michael
Attachment
On Fri, Jun 19, 2015 at 2:33 AM, Michael Paquier <michael.paquier@gmail.com> wrote: > In pg_regress.c, there is the following code: > static void > stop_postmaster(void) > { > if (postmaster_running) > { > /* We use pg_ctl to issue the kill and wait for stop */ > char buf[MAXPGPATH * 2]; > int r; > > /* On Windows, system() seems not to force fflush, so... */ > fflush(stdout); > fflush(stderr); > > snprintf(buf, sizeof(buf), > "\"%s%spg_ctl\" stop -D \"%s/data\" > -w -s -m fast", > bindir ? bindir : "", > bindir ? "/" : "", > temp_instance); > > Except if I am missing something, the comment mentions that we should > wait for the stop but there is no -w switch in the command of pg_ctl. > Doesn't the patch attached make sense? Do we need to wait, or is failing to wait harmless? -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
Michael Paquier <michael.paquier@gmail.com> writes: > Except if I am missing something, the comment mentions that we should > wait for the stop but there is no -w switch in the command of pg_ctl. > Doesn't the patch attached make sense? Per pg_ctl's help output: (The default is to wait for shutdown, but not for start or restart.) So -w is already the default in a stop call. Perhaps it would be worth adding it for documentation's sake, but there's no bug here AFAICS. regards, tom lane
On 06/19/2015 02:33 AM, Michael Paquier wrote: > Hi all, > > In pg_regress.c, there is the following code: > static void > stop_postmaster(void) > { > if (postmaster_running) > { > /* We use pg_ctl to issue the kill and wait for stop */ > char buf[MAXPGPATH * 2]; > int r; > > /* On Windows, system() seems not to force fflush, so... */ > fflush(stdout); > fflush(stderr); > > snprintf(buf, sizeof(buf), > "\"%s%spg_ctl\" stop -D \"%s/data\" > -w -s -m fast", > bindir ? bindir : "", > bindir ? "/" : "", > temp_instance); > > Except if I am missing something, the comment mentions that we should > wait for the stop but there is no -w switch in the command of pg_ctl. > Doesn't the patch attached make sense? -w is the default for stop. So the patch shouldn't make any difference. cheers andrew