Обсуждение: 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
Вложения
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