summaryrefslogtreecommitdiff
path: root/src/backend/access/transam/xlog.c
diff options
context:
space:
mode:
authorSimon Riggs <simon@2ndQuadrant.com>2013-06-23 11:05:02 +0100
committerSimon Riggs <simon@2ndQuadrant.com>2013-06-23 14:50:38 +0100
commitf44eedc3f0f347a856eea8590730769125964597 (patch)
tree97e7065fe64008e18a2bb2b3955624ca6cbbb09e /src/backend/access/transam/xlog.c
parent4f1490c78619556aa8771ab36576faedcb559680 (diff)
Ensure no xid gaps during Hot Standby startup
In some cases with higher numbers of subtransactions it was possible for us to incorrectly initialize subtrans leading to complaints of missing pages. Bug report by Sergey Konoplev Analysis and fix by Andres Freund
Diffstat (limited to 'src/backend/access/transam/xlog.c')
-rw-r--r--src/backend/access/transam/xlog.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index ac8521e0185..47ecdac5fee 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -6117,6 +6117,9 @@ StartupXLOG(void)
oldestActiveXID = checkPoint.oldestActiveXid;
Assert(TransactionIdIsValid(oldestActiveXID));
+ /* Tell procarray about the range of xids it has to deal with */
+ ProcArrayInitRecovery(ShmemVariableCache->nextXid);
+
/*
* Startup commit log and subtrans only. Other SLRUs are not
* maintained during recovery and need not be started yet.