* If the server is shut down, postmaster sends us SIGUSR2 after all
* regular backends have exited and the shutdown checkpoint has been written.
* This instruct walsender to send any outstanding WAL, including the
- * shutdown checkpoint record, and then exit.
+ * shutdown checkpoint record, wait for it to be replicated to the standby,
+ * and then exit.
*
*
* Portions Copyright (c) 2010-2012, PostgreSQL Global Development Group
/*
* When SIGUSR2 arrives, we send any outstanding logs up to the
- * shutdown checkpoint record (i.e., the latest record) and exit.
+ * shutdown checkpoint record (i.e., the latest record), wait
+ * for them to be replicated to the standby, and exit.
* This may be a normal termination at shutdown, or a promotion,
* the walsender is not sure which.
*/
{
/* ... let's just be real sure we're caught up ... */
XLogSend(output_message, &caughtup);
- if (caughtup && !pq_is_send_pending())
+ if (caughtup && XLByteEQ(sentPtr, MyWalSnd->flush) &&
+ !pq_is_send_pending())
{
walsender_shutdown_requested = true;
continue; /* don't want to wait more */