diff options
author | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2010-05-31 10:44:37 +0000 |
---|---|---|
committer | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2010-05-31 10:44:37 +0000 |
commit | e0b581acd2def7d3e237f73e953d1fd4d1ed428f (patch) | |
tree | a0f8b6abfd2f13791529aa1b910aa627b4aed692 | |
parent | bc0f080928e7476e668a848286ba596a70d2f5c2 (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.c | 10 |
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); |