From 773a3df5331df8e6b90493a5829905be52c71a3c Mon Sep 17 00:00:00 2001
From: Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>
Date: Sat, 26 Mar 2022 05:42:52 +0000
Subject: [PATCH v2] Add comment about startup process getting procState array
 slot

---
 src/backend/storage/ipc/sinvaladt.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/backend/storage/ipc/sinvaladt.c b/src/backend/storage/ipc/sinvaladt.c
index 68e7160b30..92d2f50dce 100644
--- a/src/backend/storage/ipc/sinvaladt.c
+++ b/src/backend/storage/ipc/sinvaladt.c
@@ -205,6 +205,15 @@ SInvalShmemSize(void)
 	Size		size;
 
 	size = offsetof(SISeg, procState);
+
+	/*
+	 * In Hot Standby mode, startup process requests for a free procSatate
+	 * array slot, see InitRecoveryTransactionEnvironment(). Even though
+	 * MaxBackends doesn't account for the startup process, it is guaranteed to
+	 * get a free slot. This is because autovacuum launcher and worker
+	 * processes are not started in Hot Standby mode, which MaxBackends would
+	 * have already accounted for.
+	 */
 	size = add_size(size, mul_size(sizeof(ProcState), GetMaxBackends()));
 
 	return size;
-- 
2.25.1

