summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Riggs <simon@2ndQuadrant.com>2011-03-23 13:32:37 +0000
committerSimon Riggs <simon@2ndQuadrant.com>2011-03-23 13:32:37 +0000
commit9bb1ddec4cd998c5fbac278a54d8ad5a5011e4e1 (patch)
tree6f231906cdfd8f8d92023d30f91e346b58367b02
parent3cb2f2ae4cc481dc22682d364e7a93ba6f7f4baf (diff)
Prevent intermittent hang in recovery from bgwriter interaction.
Startup process waited for cleanup lock but when hot_standby = off the pid was not registered, so that the bgwriter would not wake the waiting process as intended.
-rw-r--r--src/backend/access/transam/xlog.c2
-rw-r--r--src/backend/storage/ipc/standby.c5
2 files changed, 2 insertions, 5 deletions
diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index bb06a2e016d..4e4ec1cb9a8 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -47,6 +47,7 @@
#include "storage/fd.h"
#include "storage/ipc.h"
#include "storage/pmsignal.h"
+#include "storage/proc.h"
#include "storage/procarray.h"
#include "storage/smgr.h"
#include "storage/spin.h"
@@ -6135,6 +6136,7 @@ StartupXLOG(void)
*/
if (InArchiveRecovery && IsUnderPostmaster)
{
+ PublishStartupProcessInformation();
SetForwardFsyncRequests();
SendPostmasterSignal(PMSIGNAL_RECOVERY_STARTED);
bgwriterLaunched = true;
diff --git a/src/backend/storage/ipc/standby.c b/src/backend/storage/ipc/standby.c
index 8ddfa60b388..ce02fe76049 100644
--- a/src/backend/storage/ipc/standby.c
+++ b/src/backend/storage/ipc/standby.c
@@ -70,11 +70,6 @@ InitRecoveryTransactionEnvironment(void)
SharedInvalBackendInit(true);
/*
- * Record the PID and PGPROC structure of the startup process.
- */
- PublishStartupProcessInformation();
-
- /*
* Lock a virtual transaction id for Startup process.
*
* We need to do GetNextLocalTransactionId() because