Thread

Commits

  1. pg_regress: Promptly detect failed postmaster startup.

  1. pg_regress: promptly detect failed postmaster startup

    Noah Misch <noah@leadboat.com> — 2018-12-31T17:29:22Z

    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
    
  2. Re: pg_regress: promptly detect failed postmaster startup

    Tom Lane <tgl@sss.pgh.pa.us> — 2018-12-31T18:51:31Z

    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