Explain why the startup process can't cause a shortage of sinval slots.

Bharath Rupireddy, reviewed by Fujii Masao and Yura Sokolov.
Lightly edited by me.

Discussion: http://postgr.es/m/CALj2ACU=3_frMkDp9UUeuZoAMjaK1y0Z_q5RFNbGvwi8NM==AA@mail.gmail.com
This commit is contained in:
Robert Haas 2022-03-29 09:24:24 -04:00
parent 3785d8e98b
commit edea649afb
1 changed files with 8 additions and 0 deletions

View File

@ -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;