]> granicus.if.org Git - postgresql/commitdiff
Avoid starting walreceiver in states where it shouldn't be running.
authorRobert Haas <rhaas@postgresql.org>
Thu, 27 May 2010 02:01:37 +0000 (02:01 +0000)
committerRobert Haas <rhaas@postgresql.org>
Thu, 27 May 2010 02:01:37 +0000 (02:01 +0000)
In particular, it's bad to start walreceiver when in state
PM_WAIT_BACKENDS, because we have no provision to kill walreceiver
when in that state.

Fujii Masao

src/backend/postmaster/postmaster.c

index d1011062b4d2694aee7a1cad628ff61dc17885a2..5c7639ef7dac6aaf924799925060b25c1135e4bc 100644 (file)
@@ -37,7 +37,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.609 2010/05/26 12:32:41 rhaas Exp $
+ *       $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.610 2010/05/27 02:01:37 rhaas Exp $
  *
  * NOTES
  *
@@ -4217,7 +4217,9 @@ sigusr1_handler(SIGNAL_ARGS)
        }
 
        if (CheckPostmasterSignal(PMSIGNAL_START_WALRECEIVER) &&
-               WalReceiverPID == 0)
+               WalReceiverPID == 0 &&
+               (pmState == PM_STARTUP || pmState == PM_RECOVERY ||
+                pmState == PM_HOT_STANDBY || pmState == PM_WAIT_READONLY))
        {
                /* Startup Process wants us to start the walreceiver process. */
                WalReceiverPID = StartWalReceiver();