From b3055ab4fb5839a872bfe354b2b5ac31e6903ed6 Mon Sep 17 00:00:00 2001 From: Magnus Hagander Date: Fri, 10 Aug 2012 14:49:03 +0200 Subject: [PATCH] Fix upper limit of superuser_reserved_connections, add limit for wal_senders Should be limited to the maximum number of connections excluding autovacuum workers, not including. Add similar check for max_wal_senders, which should never be higher than max_connections. --- doc/src/sgml/config.sgml | 16 ++++++++++------ src/backend/postmaster/postmaster.c | 7 ++++++- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 43556a1366..e30c5a0cf4 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -2087,12 +2087,16 @@ SET ENABLE_SEQSCAN TO OFF; - Specifies the maximum number of concurrent connections from standby - servers or streaming base backup clients (i.e., the maximum number of - simultaneously running WAL sender - processes). The default is zero. This parameter can only be set at - server start. wal_level must be set to archive - or hot_standby to allow connections from standby servers. + Specifies the maximum number of concurrent connections from + standby servers or streaming base backup clients (i.e., the + maximum number of simultaneously running WAL sender + processes). The default is zero, meaning replication is + disabled. WAL sender processes count towards the total number + of connections, so the parameter cannot be set higher than + . This parameter can only + be set at server start. wal_level must be set + to archive or hot_standby to allow + connections from standby servers. diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index bfef707050..fee699ea9e 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -763,11 +763,16 @@ PostmasterMain(int argc, char *argv[]) /* * Check for invalid combinations of GUC settings. */ - if (ReservedBackends >= MaxBackends) + if (ReservedBackends >= 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); + ExitPostmaster(1); + } if (XLogArchiveMode && wal_level == WAL_LEVEL_MINIMAL) ereport(ERROR, (errmsg("WAL archival (archive_mode=on) requires wal_level \"archive\" or \"hot_standby\"")));