summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>2010-05-31 10:44:37 +0000
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>2010-05-31 10:44:37 +0000
commite0b581acd2def7d3e237f73e953d1fd4d1ed428f (patch)
treea0f8b6abfd2f13791529aa1b910aa627b4aed692
parentbc0f080928e7476e668a848286ba596a70d2f5c2 (diff)
Send all outstanding WAL before exiting when smart shutdown is requested.
This was broken by my previous patch to send WAL in smaller batches. Patch by Fujii Masao.
-rw-r--r--src/backend/replication/walsender.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/backend/replication/walsender.c b/src/backend/replication/walsender.c
index 0d38054008a..1d3b9aa8610 100644
--- a/src/backend/replication/walsender.c
+++ b/src/backend/replication/walsender.c
@@ -30,7 +30,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/replication/walsender.c,v 1.22 2010/05/26 22:34:49 heikki Exp $
+ * $PostgreSQL: pgsql/src/backend/replication/walsender.c,v 1.23 2010/05/31 10:44:37 heikki Exp $
*
*-------------------------------------------------------------------------
*/
@@ -394,8 +394,10 @@ WalSndLoop(void)
*/
if (ready_to_stop)
{
- XLogSend(&output_message, &caughtup);
- shutdown_requested = true;
+ if (!XLogSend(&output_message, &caughtup))
+ goto eof;
+ if (caughtup)
+ shutdown_requested = true;
}
/* Normal exit from the walsender is here */
@@ -458,7 +460,6 @@ eof:
static void
InitWalSnd(void)
{
- /* use volatile pointer to prevent code rearrangement */
int i;
/*
@@ -474,6 +475,7 @@ InitWalSnd(void)
*/
for (i = 0; i < max_wal_senders; i++)
{
+ /* use volatile pointer to prevent code rearrangement */
volatile WalSnd *walsnd = &WalSndCtl->walsnds[i];
SpinLockAcquire(&walsnd->mutex);