From 3b7ce68d151646ae1843512208fb20f4641e75aa Mon Sep 17 00:00:00 2001 From: Simon Riggs Date: Mon, 5 Oct 2009 14:17:20 +0100 Subject: [PATCH] Make some changes to code and comments in KnownAssignedXids functions. Based upon changes in 0006-Fix-comments-in-known-assigned-xids-module-about-whe.patch, but one XXX comment replaced by a code change. The comment change to say that KnownAssignedXidsRemove needs only a share lock is wrong and has not been applied. --- src/backend/storage/ipc/procarray.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/backend/storage/ipc/procarray.c b/src/backend/storage/ipc/procarray.c index c9e010ed15..7d1f42ce29 100644 --- a/src/backend/storage/ipc/procarray.c +++ b/src/backend/storage/ipc/procarray.c @@ -513,6 +513,11 @@ ProcArrayApplyRecoveryInfo(XLogRecPtr lsn, xl_xact_running_xacts *xlrec) xids = palloc(sizeof(TransactionId) * (xlrec->xcnt + xlrec->subxcnt)); nxids = 0; + /* + * Nobody else is running yet, but take locks anyhow + */ + LWLockAcquire(ProcArrayLock, LW_EXCLUSIVE); + ProcArrayDisplay(trace_recovery(DEBUG3)); /* @@ -536,11 +541,6 @@ ProcArrayApplyRecoveryInfo(XLogRecPtr lsn, xl_xact_running_xacts *xlrec) } - /* - * Nobody else is running yet, but take locks anyhow - */ - LWLockAcquire(ProcArrayLock, LW_EXCLUSIVE); - if (TransactionIdPrecedes(ShmemVariableCache->latestCompletedXid, xlrec->latestCompletedXid)) ShmemVariableCache->latestCompletedXid = xlrec->latestCompletedXid; @@ -2532,7 +2532,7 @@ KnownAssignedXidsGet(TransactionId *xarray, TransactionId *xmin, * Prune KnownAssignedXids up to, but *not* including xid. If xid is invalid * then clear the whole table. * - * Must be called while not holding ProcArrayLock. Will grab lock if required. + * Must be called while holding ProcArrayLock in Exclusive mode. */ static void KnownAssignedXidsRemoveMany(TransactionId xid) @@ -2595,7 +2595,7 @@ xidComparator(const void *arg1, const void *arg2) /* * Display KnownAssignedXids to provide debug trail * - * Must be called while holding ProcArrayLock in Exclusive mode + * Must be called while holding ProcArrayLock in Shared mode */ void KnownAssignedXidsDisplay(int trace_level) -- 2.39.5