1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-20 05:03:10 +03:00

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.
This commit is contained in:
Magnus Hagander
2012-08-10 14:49:03 +02:00
parent c0751d323e
commit 6f0c9bc4b9
2 changed files with 16 additions and 6 deletions

View File

@ -1908,11 +1908,16 @@ SET ENABLE_SEQSCAN TO OFF;
</indexterm> </indexterm>
<listitem> <listitem>
<para> <para>
Specifies the maximum number of concurrent connections from standby Specifies the maximum number of concurrent connections from
servers (i.e., the maximum number of simultaneously running WAL sender standby servers (i.e., the
processes). The default is zero. This parameter can only be set at maximum number of simultaneously running WAL sender
server start. <varname>wal_level</> must be set to <literal>archive</> processes). The default is zero, meaning replication is
or <literal>hot_standby</> to allow connections from standby servers. disabled. WAL sender processes count towards the total number
of connections, so the parameter cannot be set higher than
<xref linkend="guc-max-connections">. This parameter can only
be set at server start. <varname>wal_level</> must be set
to <literal>archive</> or <literal>hot_standby</> to allow
connections from standby servers.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>

View File

@ -724,11 +724,16 @@ PostmasterMain(int argc, char *argv[])
/* /*
* Check for invalid combinations of GUC settings. * 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); write_stderr("%s: superuser_reserved_connections must be less than max_connections\n", progname);
ExitPostmaster(1); 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) if (XLogArchiveMode && wal_level == WAL_LEVEL_MINIMAL)
ereport(ERROR, ereport(ERROR,
(errmsg("WAL archival (archive_mode=on) requires wal_level \"archive\" or \"hot_standby\""))); (errmsg("WAL archival (archive_mode=on) requires wal_level \"archive\" or \"hot_standby\"")));