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 /src | |
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.
Diffstat (limited to 'src')
-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); |