mirror of
https://github.com/postgres/postgres.git
synced 2025-11-07 19:06:32 +03:00
Fix cross-checking of ReservedBackends/max_wal_senders/MaxConnections.
We were independently checking ReservedBackends < MaxConnections and max_wal_senders < MaxConnections, but because walsenders aren't allowed to use superuser-reserved connections, that's really the wrong thing. Correct behavior is to insist on ReservedBackends + max_wal_senders being less than MaxConnections. Fix the code and associated documentation. This has been wrong for a long time, but since the situation probably hardly ever arises in the field (especially pre-v10, when the default for max_wal_senders was zero), no back-patch. Discussion: https://postgr.es/m/28271.1520195491@sss.pgh.pa.us
This commit is contained in:
@@ -202,9 +202,9 @@ char *ListenAddresses;
|
||||
|
||||
/*
|
||||
* ReservedBackends is the number of backends reserved for superuser use.
|
||||
* This number is taken out of the pool size given by MaxBackends so
|
||||
* This number is taken out of the pool size given by MaxConnections so
|
||||
* number of backend slots available to non-superusers is
|
||||
* (MaxBackends - ReservedBackends). Note what this really means is
|
||||
* (MaxConnections - ReservedBackends). Note what this really means is
|
||||
* "if there are <= ReservedBackends connections available, only superusers
|
||||
* can make new connections" --- pre-existing superuser connections don't
|
||||
* count against the limit.
|
||||
@@ -882,14 +882,11 @@ PostmasterMain(int argc, char *argv[])
|
||||
/*
|
||||
* Check for invalid combinations of GUC settings.
|
||||
*/
|
||||
if (ReservedBackends >= MaxConnections)
|
||||
if (ReservedBackends + max_wal_senders >= MaxConnections)
|
||||
{
|
||||
write_stderr("%s: superuser_reserved_connections must be less than max_connections\n", progname);
|
||||
ExitPostmaster(1);
|
||||
}
|
||||
if (max_wal_senders >= MaxConnections)
|
||||
{
|
||||
write_stderr("%s: max_wal_senders must be less than max_connections\n", progname);
|
||||
write_stderr("%s: superuser_reserved_connections (%d) plus max_wal_senders (%d) must be less than max_connections (%d)\n",
|
||||
progname,
|
||||
ReservedBackends, max_wal_senders, MaxConnections);
|
||||
ExitPostmaster(1);
|
||||
}
|
||||
if (XLogArchiveMode > ARCHIVE_MODE_OFF && wal_level == WAL_LEVEL_MINIMAL)
|
||||
|
||||
Reference in New Issue
Block a user