]> granicus.if.org Git - postgresql/commit
Avoid possible hang during smart shutdown.
authorRobert Haas <rhaas@postgresql.org>
Sun, 3 Apr 2011 23:42:00 +0000 (19:42 -0400)
committerRobert Haas <rhaas@postgresql.org>
Sun, 3 Apr 2011 23:42:00 +0000 (19:42 -0400)
commit38b27792eae99f5b4db2411f5c57ef70f850df5f
tree87314c9f0634515a9b0a3f2859af9f02e1aa9d7a
parentd518d6a168797c2e3b9cf03a3b5cfa335be735bb
Avoid possible hang during smart shutdown.

If a smart shutdown occurs just as a child is starting up, and the
child subsequently becomes a walsender, there is a race condition:
the postmaster might count the exstant backends, determine that there
is one normal backend, and wait for it to die off.  Had the walsender
transition already occurred before the postmaster counted, it would
have proceeded with the shutdown.

To fix this, have each child that transforms into a walsender kick
the postmaster just after doing so, so that the state machine is
certain to advance.

Fujii Masao
src/backend/postmaster/postmaster.c
src/backend/replication/walsender.c
src/include/storage/pmsignal.h