From 9e5fe4d49227c5c5297410d54d6551a726814adc Mon Sep 17 00:00:00 2001 From: Simon Riggs Date: Wed, 2 Nov 2011 08:06:54 +0000 Subject: Fix timing of Startup CLOG and MultiXact during Hot Standby Patch by me, bug report by Chris Redekop, analysis by Florian Pflug --- src/backend/access/transam/clog.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/backend/access/transam/clog.c') diff --git a/src/backend/access/transam/clog.c b/src/backend/access/transam/clog.c index d3de8934eee..34258ec5582 100644 --- a/src/backend/access/transam/clog.c +++ b/src/backend/access/transam/clog.c @@ -490,6 +490,25 @@ StartupCLOG(void) */ ClogCtl->shared->latest_page_number = pageno; + LWLockRelease(CLogControlLock); +} + +/* + * This must be called ONCE at the end of startup/recovery. + */ +void +TrimCLOG(void) +{ + TransactionId xid = ShmemVariableCache->nextXid; + int pageno = TransactionIdToPage(xid); + + LWLockAcquire(CLogControlLock, LW_EXCLUSIVE); + + /* + * Re-Initialize our idea of the latest page number. + */ + ClogCtl->shared->latest_page_number = pageno; + /* * Zero out the remainder of the current clog page. Under normal * circumstances it should be zeroes already, but it seems at least -- cgit v1.2.3