On Sun, 2009-11-15 at 16:07 +0200, Heikki Linnakangas wrote: > - When switching from standby mode to normal operation, we momentarily > hold all AccessExclusiveLocks held by prepared xacts twice, needing > twice the lock space. You can run out of lock space at that point, > causing failover to fail.
Proposed patch to fix that attached. -- Simon Riggs www.2ndQuadrant.com
diff --git a/src/backend/access/transam/twophase.c b/src/backend/access/transam/twophase.c index ba4d69c..1aed31c 100644 --- a/src/backend/access/transam/twophase.c +++ b/src/backend/access/transam/twophase.c @@ -1757,6 +1757,14 @@ RecoverPreparedTransactions(void) */ ProcessRecords(bufptr, xid, twophase_recover_callbacks); + /* + * Release locks held by the standby process after we process each + * prepared transaction. As a result, we don't need to too many + * additional locks at one time. + */ + if (InHotStandby) + StandbyReleaseLockTree(xid, hdr->nsubxacts, subxids); + pfree(buf); } }
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers