aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/storage/ipc/sinvaladt.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/backend/storage/ipc/sinvaladt.c b/src/backend/storage/ipc/sinvaladt.c
index 68e7160b30e..2dec668bbcd 100644
--- a/src/backend/storage/ipc/sinvaladt.c
+++ b/src/backend/storage/ipc/sinvaladt.c
@@ -205,6 +205,14 @@ SInvalShmemSize(void)
Size size;
size = offsetof(SISeg, procState);
+
+ /*
+ * In Hot Standby mode, the startup process requests a procState array
+ * slot using InitRecoveryTransactionEnvironment(). Even though MaxBackends
+ * doesn't account for the startup process, it is guaranteed to get a
+ * free slot. This is because the autovacuum launcher and worker processes,
+ * which are included in MaxBackends, are not started in Hot Standby mode.
+ */
size = add_size(size, mul_size(sizeof(ProcState), GetMaxBackends()));
return size;