double_locks.v1.patch

text/x-patch

Filename: double_locks.v1.patch
Type: text/x-patch
Part: 0
Message: Re: Summary and Plan for Hot Standby

Patch

Format: unified
Series: patch v1
File+
src/backend/access/transam/twophase.c 8 0
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);
 		}
 	}