Обсуждение: pg_regress: promptly detect failed postmaster startup

Поиск
Список
Период
Сортировка

pg_regress: promptly detect failed postmaster startup

От
Noah Misch
Дата:
When "make check TEMP_CONFIG=<(echo break_me=on)" spawns a postmaster that
fails startup, we detect that with "pg_regress: postmaster did not respond
within 60 seconds".  pg_regress has a kill(postmaster_pid, 0) intended to
detect this case faster.  Since kill(ZOMBIE-PID, 0) succeeds[1], that test is
ineffective.  The fix, attached, is to instead test waitpid(), like pg_ctl's
wait_for_postmaster() does.

[1] Search for "zombie" in
http://pubs.opengroup.org/onlinepubs/9699919799/functions/kill.html

Вложения

Re: pg_regress: promptly detect failed postmaster startup

От
Tom Lane
Дата:
Noah Misch <noah@leadboat.com> writes:
> When "make check TEMP_CONFIG=<(echo break_me=on)" spawns a postmaster that
> fails startup, we detect that with "pg_regress: postmaster did not respond
> within 60 seconds".  pg_regress has a kill(postmaster_pid, 0) intended to
> detect this case faster.  Since kill(ZOMBIE-PID, 0) succeeds[1], that test is
> ineffective.

Ooops.

> The fix, attached, is to instead test waitpid(), like pg_ctl's
> wait_for_postmaster() does.

+1.  This leaves postmaster_pid as a dangling pointer, but since
we just exit immediately, that seems fine.  (If we continued, and
arrived at the "kill(postmaster_pid, SIGKILL)" below, it would not
be fine.)

            regards, tom lane